Cómo actualizar docker-compose a la última versión

102

He instalado docker-compose usando el comando

sudo apt install docker-compose

Instaló docker-compose versión 1.8.0 y compilación desconocida

Necesito la última versión de docker-compose o al menos una versión de 1.9.0

¿Alguien puede decirme qué enfoque debo tomar para actualizarlo o desinstalar y reinstalar la última versión?

He comprobado el sitio web de Docker y puedo ver que lo recomiendan para instalar la última versión '

sudo curl -L https://github.com/docker/compose/releases/download/1.21.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose

Pero antes de eso, tengo que desinstalar la versión actual, lo cual se puede hacer usando el comando

sudo rm /usr/local/bin/docker-compose

pero esto solo se puede usar cuando la instalación se realizó usando curl. No estoy seguro de si la instalación se realizó mediante curl como he usado

sudo apt install docker-compose

Déjeme saber qué debo hacer ahora para desinstalar y volver a instalar el docker-compose.

Sam_2207
fuente

Respuestas:

131

Primero, elimine la versión anterior :

Si se instala a través de apt-get

sudo apt-get remove docker-compose

Si se instala a través de curl

sudo rm /usr/local/bin/docker-compose

Si se instala a través de pip

pip uninstall docker-compose

Luego, busque la versión más reciente en la página de lanzamiento en GitHub o curling la API si la ha jqinstalado (gracias a dragon788 y frbl por esta mejora):

VERSION=$(curl --silent https://api.github.com/repos/docker/compose/releases/latest | jq .name -r)

Finalmente, descargue a su ubicación favorita accesible a $ PATH y configure los permisos:

DESTINATION=/usr/local/bin/docker-compose
sudo curl -L https://github.com/docker/compose/releases/download/${VERSION}/docker-compose-$(uname -s)-$(uname -m) -o $DESTINATION
sudo chmod 755 $DESTINATION
Eric M. Johnson
fuente
2
intente actualizar la ruta en / usr / local / bin / docker-compose y luego ejecutesudo chmod +x /usr/bin/docker-compose
Raj Kumar Goyal
2
No es necesario mover el archivo. El /usr/local/bincamino ya debería estar adentro $PATH. Justo chmoden su lugar. Respuesta actualizada para reflejar esto.
Gold
4
Probablemente quieras hacer en sudo chmod 755 $DESTINATIONlugar de solo+x
Neo
2
Neo, buen partido. Por lo general, solo ajusto las permanentes a mis necesidades en caso de que otras cosas hayan configurado las cosas como las necesitan. Pero aquí estamos descargando un archivo nuevo. Establecer todas las permanentes tiene sentido.
Oro
2
@Rebar ¿Puede ser más específico sobre a qué desea actualizar la ruta? /usr/local/bines un lugar bastante estándar para colocar binarios globales no administrados por el sistema de empaquetado. La respuesta también menciona la especificación de "su ubicación accesible a $ PATH favorita", lo que indica ajustar si su ubicación $PATHes diferente.
Eric M. Johnson
37

La forma más fácil de tener una solución permanente y sostenible para la instalación de Docker Compose y la forma de actualizarla es simplemente usar el administrador de paquetes pip con:

pip install docker-compose

Estaba buscando una buena solución para el desagradable problema de "cómo actualizar al último número de versión", que apareció después de haber leído los documentos oficiales, y lo encontró ocasionalmente, solo eche un vistazo al pip de docker-compose paquete : debe reflejar (principalmente) el número actual de la última versión de Docker Compose publicada .

¡Un administrador de paquetes es siempre la mejor solución si se trata de administrar instalaciones de software! Así que simplemente te abstraes de manejar las versiones por tu cuenta.

jonashackt
fuente
2
+1 gran respuesta. Antes: tenía la versión docker-compose: docker-compose versión 1.21.2, build a133471 Entonces, para actualizar a la última versión que no es RC, encontré que esto funcionaba para actualizar: 1) apt install python-pippara instalar PIP y luego pip install docker-composepara instalar la última y luego para verificar la versión: docker-compose --versionque me dio: docker-compose versión 1.23.2, build 1110ad0
therobyouknow
pip install docker-composeme estaba dando "Requisito ya satisfecho: docker-compose", así que tenía que hacerlo apt-get purge docker-composey hash -d docker-composeluego pip install docker-composeobtener docker-compose 1.24 en Ubuntu 18.04.
krubo
Después de instalar docker-compose por pip, encontré este error:ImportError: cannot import name 'Context'
Benyamin Jafari
Entonces, para lidiar con este error, reinstalo el dockerpaquete porpip
Benyamin Jafari
17

Según la respuesta de @ eric-johnson, actualmente estoy usando esto en un script:

#!/bin/bash
compose_version=$(curl https://api.github.com/repos/docker/compose/releases/latest | jq .name -r)
output='/usr/local/bin/docker-compose'
curl -L https://github.com/docker/compose/releases/download/$compose_version/docker-compose-$(uname -s)-$(uname -m) -o $output
chmod +x $output
echo $(docker-compose --version)

toma la última versión de la api de GitHub.

frbl
fuente
Me encontré con un error en la cuarta línea zsh: parse error near
:)
acabo de probarlo aquí, pero parece funcionar bien (debian 10 con zsh). ¿Seguro que lo copiaste correctamente?
Frbl
Intente citar las URL dos veces, ya que a veces el shell puede resultar un poco complicado.
dragon788
15

Si los métodos anteriores no funcionan para usted, consulte esta respuesta: https://stackoverflow.com/a/40554985

curl -L "https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m)" > ./docker-compose
sudo mv ./docker-compose /usr/bin/docker-compose
sudo chmod +x /usr/bin/docker-compose
kpratihast
fuente
3
Si bien este enlace puede responder a la pregunta, es mejor incluir las partes esenciales de la respuesta aquí y proporcionar el enlace como referencia. Las respuestas de solo enlace pueden dejar de ser válidas si cambia la página enlazada. - De la crítica
Luuklag
@Luuklag Actualizó la respuesta. Gracias por la sugerencia
kpratihast
Parece ser una opción extremadamente lenta
TeoTN
10

Si lo intentó sudo apt-get remove docker-composey lo consiguió E: Unable to locate package docker-compose, pruebe este método:

Este comando debe devolver un resultado para verificar que esté instalado aquí:

ls -l /usr/local/bin/docker-compose

Elimina la versión anterior:

sudo rm -rf docker-compose

Descargue la última versión (consulte el repositorio oficial: docker / compose / releases ):

sudo curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

( reemplace 1.24.0 si es necesario )

Finalmente, aplique permisos ejecutables al binario:

sudo chmod +x /usr/local/bin/docker-compose

Ver versión:

docker-compose -v
Dependencia Infierno
fuente
5

Aquí hay otro delineador para instalar la última versión de docker-compose usando curl y sed.

curl -L "https://github.com/docker/compose/releases/download/`curl -fsSLI -o /dev/null -w %{url_effective} https://github.com/docker/compose/releases/latest | sed 's#.*tag/##g' && echo`/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose && chmod +x /usr/local/bin/docker-compose
Jakob Eriksson
fuente
2

use esto desde la línea de comando: sudo curl -L "https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

Anote la última versión de lanzamiento

Aplicar permisos ejecutables al binario:

sudo chmod +x /usr/local/bin/docker-compose

Luego prueba la versión:

$ docker-compose --version
Md. Tanvir Rahaman
fuente
1

Después de buscar muchas formas de realizar esto, terminé usando jq, y espero poder expandirlo para manejar otros repositorios más allá de Docker-Compose sin demasiado trabajo.

# If you have jq installed this will automatically find the latest release binary for your architecture and download it
curl --silent "https://api.github.com/repos/docker/compose/releases/latest" | jq --arg PLATFORM_ARCH "$(echo `uname -s`-`uname -m`)" -r '.assets[] | select(.name | endswith($PLATFORM_ARCH)).browser_download_url' | xargs sudo curl -L -o /usr/local/bin/docker-compose --url
dragón788
fuente
1

Si tiene homebrew también puede instalarlo a través de brew

$ brew install docker-compose

Esta es una buena forma de instalar en un sistema Mac OS

Kristian Mandrup
fuente
1

En el escritorio de ubuntu 18.04.2, elimino el 'local' de la ruta cuando uso el comando curl para instalar el paquete y me funciona. Vea la respuesta anterior de Kshitij.

Harry
fuente
1

Si instaló con pip, para actualizar solo puede usar:

 pip install --upgrade docker-compose

o como afirma Mariyo con pip3 explícitamente:

 pip3 install --upgrade docker-compose
Branimir Valentić
fuente
en mi caso fuepip3 install --upgrade docker-compose
Mariyo
1

Estaba intentando instalar docker-compose en "Ubuntu 16.04.5 LTS" pero después de instalarlo así:

sudo curl -L "https://github.com/docker/compose/releases/download/1.26.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

Yo estaba consiguiendo:

-bash: / usr / local / bin / docker-compose: Permiso denegado

y mientras lo usaba con sudo obtenía:

sudo: docker-compose: comando no encontrado

Así que aquí están los pasos que tomé y resolví mi problema:

sudo curl -L "https://github.com/docker/compose/releases/download/1.26.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo ln -sf /usr/local/bin/docker-compose /usr/bin/docker-compose
sudo chmod +x /usr/bin/docker-compose
ArminMz
fuente