@@ -76,6 +76,62 @@ def check_and_install_docker():
7676 if docker_exists and compose_exists :
7777 return True
7878
79+ if docker_exists and not compose_exists :
80+ click .secho ("🔥 Docker Compose (plugin) not found." , fg = "yellow" )
81+ # Try to install docker compose via local package manager
82+ distro = None
83+ distro_like = None
84+ try :
85+ with open ("/etc/os-release" ) as f :
86+ for line in f :
87+ if line .startswith ("ID=" ):
88+ distro = line .strip ().split ("=" )[1 ].strip ('"' )
89+ elif line .startswith ("ID_LIKE=" ):
90+ distro_like = line .strip ().split ("=" )[1 ].strip ('"' )
91+ except Exception :
92+ pass
93+ installed = False
94+ if distro in ["ubuntu" , "debian" ]:
95+ click .echo ("Attempting to install docker-compose-plugin via apt..." )
96+ try :
97+ subprocess .run (["sudo" , "apt-get" , "update" ], check = True )
98+ subprocess .run (["sudo" , "apt-get" , "install" , "-y" , "docker-compose-plugin" ], check = True )
99+ # Re-check if compose is now available
100+ result = subprocess .run (["docker" , "compose" , "version" ], stdout = subprocess .PIPE , stderr = subprocess .PIPE )
101+ if result .returncode == 0 :
102+ click .secho ("✅ Docker Compose plugin installed successfully." , fg = "green" )
103+ return True
104+ else :
105+ click .secho ("❌ Docker Compose plugin installation failed." , fg = "red" )
106+ except Exception as e :
107+ click .secho (f"❌ Failed to install docker-compose-plugin: { e } " , fg = "red" )
108+ elif distro in ["fedora" , "centos" , "rhel" , "amzn" ] or (distro_like and "fedora" in distro_like ):
109+ click .echo ("Attempting to install docker-compose-plugin via dnf..." )
110+ try :
111+ subprocess .run (["sudo" , "dnf" , "install" , "-y" , "docker-compose-plugin" ], check = True )
112+ result = subprocess .run (["docker" , "compose" , "version" ], stdout = subprocess .PIPE , stderr = subprocess .PIPE )
113+ if result .returncode == 0 :
114+ click .secho ("✅ Docker Compose plugin installed successfully." , fg = "green" )
115+ return True
116+ else :
117+ click .secho ("❌ Docker Compose plugin installation failed." , fg = "red" )
118+ except Exception as e :
119+ click .secho (f"❌ Failed to install docker-compose-plugin: { e } " , fg = "red" )
120+ elif distro in ["arch" , "manjaro" ]:
121+ click .echo ("Attempting to install docker-compose via pacman..." )
122+ try :
123+ subprocess .run (["sudo" , "pacman" , "-Sy" , "docker-compose" ], check = True )
124+ result = subprocess .run (["docker" , "compose" , "version" ], stdout = subprocess .PIPE , stderr = subprocess .PIPE )
125+ if result .returncode == 0 :
126+ click .secho ("✅ Docker Compose installed successfully." , fg = "green" )
127+ return True
128+ else :
129+ click .secho ("❌ Docker Compose installation failed." , fg = "red" )
130+ except Exception as e :
131+ click .secho (f"❌ Failed to install docker-compose: { e } " , fg = "red" )
132+ # If not installed, fallback to official script
133+ click .secho ("Could not install Docker Compose plugin via package manager." , fg = "yellow" )
134+
79135 click .secho ("🔥 Docker or Docker Compose not found." , fg = "yellow" )
80136 if click .confirm ("May I attempt to install them using the official script? (Requires sudo)" ):
81137 try :
0 commit comments