@@ -4,44 +4,71 @@ import (
44 "fmt"
55 "time"
66
7+ "github.com/utmstack/UTMStack/installer/config"
78 "github.com/utmstack/UTMStack/installer/services"
89 "github.com/utmstack/UTMStack/installer/utils"
910)
1011
11- func InstallDocker () error {
12- env := []string {"DEBIAN_FRONTEND=noninteractive" }
12+ func InstallDocker (distro string ) error {
13+ switch distro {
14+ case config .RequiredDistroUbuntu :
15+ env := []string {"DEBIAN_FRONTEND=noninteractive" }
1316
14- if err := utils .RunEnvCmd (env , "apt-get" , "update" ); err != nil {
15- return err
16- }
17+ if err := utils .RunEnvCmd (env , "apt-get" , "update" ); err != nil {
18+ return err
19+ }
1720
18- if err := utils .RunEnvCmd (env , "apt-get" , "install" , "-y" , "ca-certificates" , "curl" ); err != nil {
19- return err
20- }
21+ if err := utils .RunEnvCmd (env , "apt-get" , "install" , "-y" , "ca-certificates" , "curl" ); err != nil {
22+ return err
23+ }
2124
22- if err := utils .RunEnvCmd (env , "install" , "-m" , "0755" , "-d" , "/etc/apt/keyrings" ); err != nil {
23- return err
24- }
25+ if err := utils .RunEnvCmd (env , "install" , "-m" , "0755" , "-d" , "/etc/apt/keyrings" ); err != nil {
26+ return err
27+ }
2528
26- if err := utils .RunEnvCmd (env , "curl" , "-fsSL" , "https://download.docker.com/linux/ubuntu/gpg" , "-o" , "/etc/apt/keyrings/docker.asc" ); err != nil {
27- return err
28- }
29+ if err := utils .RunEnvCmd (env , "curl" , "-fsSL" , "https://download.docker.com/linux/ubuntu/gpg" , "-o" , "/etc/apt/keyrings/docker.asc" ); err != nil {
30+ return err
31+ }
2932
30- if err := utils .RunEnvCmd (env , "chmod" , "a+r" , "/etc/apt/keyrings/docker.asc" ); err != nil {
31- return err
32- }
33+ if err := utils .RunEnvCmd (env , "chmod" , "a+r" , "/etc/apt/keyrings/docker.asc" ); err != nil {
34+ return err
35+ }
3336
34- repoCmd := `echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null`
35- if err := utils .RunEnvCmd (env , "sh" , "-c" , repoCmd ); err != nil {
36- return err
37- }
37+ repoCmd := `echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null`
38+ if err := utils .RunEnvCmd (env , "sh" , "-c" , repoCmd ); err != nil {
39+ return err
40+ }
3841
39- if err := utils .RunEnvCmd (env , "apt-get" , "update" ); err != nil {
40- return err
41- }
42+ if err := utils .RunEnvCmd (env , "apt-get" , "update" ); err != nil {
43+ return err
44+ }
4245
43- if err := utils .RunEnvCmd (env , "apt-get" , "install" , "-y" , "docker-ce" , "docker-ce-cli" , "containerd.io" , "docker-compose" , "docker-buildx-plugin" , "docker-compose-plugin" ); err != nil {
44- return err
46+ if err := utils .RunEnvCmd (env , "apt-get" , "install" , "-y" , "docker-ce" , "docker-ce-cli" , "containerd.io" , "docker-compose" , "docker-buildx-plugin" , "docker-compose-plugin" ); err != nil {
47+ return err
48+ }
49+
50+ case config .RequiredDistroRHEL :
51+ env := []string {"DNF_YUM_AUTO_YES=1" }
52+
53+ if err := utils .RunEnvCmd (env , "dnf" , "install" , "-y" , "dnf-plugins-core" , "ca-certificates" , "curl" ); err != nil {
54+ return err
55+ }
56+
57+ if err := utils .RunEnvCmd (env , "dnf" , "config-manager" , "--add-repo" , "https://download.docker.com/linux/centos/docker-ce.repo" ); err != nil {
58+ return err
59+ }
60+
61+ if err := utils .RunEnvCmd (env , "dnf" , "makecache" ); err != nil {
62+ return err
63+ }
64+
65+ if err := utils .RunEnvCmd (env , "dnf" , "install" , "-y" , "docker-ce" , "docker-ce-cli" , "containerd.io" , "docker-compose-plugin" , "docker-buildx-plugin" ); err != nil {
66+ return err
67+ }
68+
69+ if err := utils .RunEnvCmd (env , "systemctl" , "enable" , "--now" , "docker" ); err != nil {
70+ return err
71+ }
4572 }
4673
4774 return nil
0 commit comments