Jak zaktualizować docker-compose do najnowszej wersji

110

Zainstalowałem docker-compose za pomocą polecenia

sudo apt install docker-compose

Zainstalował docker-compose w wersji 1.8.0 i zbudował nieznany

Potrzebuję najnowszej wersji docker-compose lub przynajmniej wersji 1.9.0

Czy ktoś może mi powiedzieć, jakie podejście powinienem podjąć, aby go zaktualizować lub odinstalować i ponownie zainstalować najnowszą wersję.

Sprawdziłem witrynę Dockera i widzę, że zalecają to do zainstalowania najnowszej wersji '

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

Ale wcześniej muszę odinstalować obecną wersję, co można zrobić za pomocą polecenia

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

ale można tego użyć tylko wtedy, gdy instalacja została wykonana za pomocą curl. Nie jestem pewien, czy instalacja została wykonana przez curl, tak jak ja

sudo apt install docker-compose

Daj mi znać, co mam teraz zrobić, aby odinstalować i ponownie zainstalować plik docker-compose.

Sam_2207
źródło

Odpowiedzi:

145

Najpierw usuń starą wersję :

Jeśli jest zainstalowany przez apt-get

sudo apt-get remove docker-compose

Jeśli jest zainstalowany przez curl

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

W przypadku instalacji przez pip

pip uninstall docker-compose

Następnie znajdź najnowszą wersję na stronie wydania w GitHub lub zwijając API, jeśli masz jqzainstalowane (dzięki dragon788 i frbl za to ulepszenie):

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

Na koniec pobierz do swojej ulubionej lokalizacji dostępnej dla $ PATH i ustaw uprawnienia:

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
źródło
2
spróbuj zaktualizować ścieżkę w / usr / local / bin / docker-compose, a następnie uruchomsudo chmod +x /usr/bin/docker-compose
Raj Kumar Goyal
2
Nie ma potrzeby przenoszenia pliku. /usr/local/binŚcieżka powinna być $PATHjuż. Po prostu chmodna miejscu. Zaktualizowano odpowiedź, aby to odzwierciedlić.
Gold
4
Prawdopodobnie chcesz zrobić sudo chmod 755 $DESTINATIONzamiast tylko+x
Neo
2
Neo, dobry chwyt. Zazwyczaj po prostu dostosowuję perm do moich potrzeb, na wypadek gdyby inne rzeczy ustawiły to, czego potrzebują. Ale tutaj pobieramy nowy plik. Ustawienie wszystkich trwałych ma sens.
Gold
2
@Rebar Czy możesz bardziej szczegółowo określić, do czego chcesz zaktualizować ścieżkę? /usr/local/binjest dość standardowym miejscem do umieszczania globalnych plików binarnych, które nie są zarządzane przez system pakowania. Odpowiedź wspomina również o określeniu „Twojej ulubionej lokalizacji dostępnej dla $ PATH”, co wskazuje na dostosowanie, jeśli Twoja $PATHjest inna.
Eric M. Johnson,
38

Najłatwiejszym sposobem posiadania trwałego i zrównoważonego rozwiązania dla instalacji Docker Compose oraz sposobu na jej aktualizację jest po prostu użycie pip menedżera pakietów z:

pip install docker-compose

Szukałem dobrego rozwiązania dla brzydkiego problemu „jak zaktualizować do najnowszej wersji”, który pojawił się po przeczytaniu oficjalnej dokumentacji - i okazjonalnie go znajdowałem - po prostu spójrz na plik pip docker-compose pakiet - powinien odzwierciedlać (w większości) aktualny numer najnowszej wydanej wersji Docker Compose .

Menedżer pakietów jest zawsze najlepszym rozwiązaniem, jeśli chodzi o zarządzanie instalacjami oprogramowania! Więc po prostu abstrahujesz od samodzielnego obsługiwania wersji.

jonashackt
źródło
2
+1 świetna odpowiedź. Wcześniej: miałem wersję docker-compose: docker-compose w wersji 1.21.2, kompilacja a133471 Aby zaktualizować do najnowszej wersji innej niż RC, zauważyłem, że działa to w celu aktualizacji: 1) apt install python-pipzainstalować PIP, a następnie pip install docker-composezainstalować najnowszą i potem sprawdzić wersję: docker-compose --versionktóra dała mi: docker-compose wersja 1.23.2, build 1110ad0
therobyouknow
pip install docker-composedawał mi „Wymaganie już spełnione: docker-compose”, więc musiałem to zrobić, apt-get purge docker-composea hash -d docker-composenastępnie pip install docker-composepobrać docker-compose 1.24 na Ubuntu 18.04.
krubo
Po zainstalowaniu docker-compose przez pip napotkałem ten błąd:ImportError: cannot import name 'Context'
Benyamin Jafari
Aby poradzić sobie z tym błędem, przeinstalowałem dockerpakiet dopip
Benyamin Jafari
17

W oparciu o odpowiedź @ eric-johnson, obecnie używam tego w skrypcie:

#!/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)

pobiera najnowszą wersję z interfejsu API GitHub.

frbl
źródło
Napotkałem błąd w czwartej linii zsh: parse error near
:)
właśnie przetestowałem to tutaj, ale wygląda na to, że działa dobrze (debian 10 z zsh). Jesteś pewien, że skopiowałeś go poprawnie?
frbl
Spróbuj podwójne cudzysłowy w adresach URL, ponieważ czasami powłoka może trochę się zaciąć.
dragon788
15

Jeśli powyższe metody nie działają dla Ciebie, zapoznaj się z tą odpowiedzią: 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
źródło
3
Chociaż ten link może odpowiedzieć na pytanie, lepiej jest zawrzeć tutaj zasadnicze części odpowiedzi i podać link do odniesienia. Odpowiedzi zawierające tylko łącze mogą stać się nieprawidłowe, jeśli połączona strona ulegnie zmianie. - Z recenzji
Luuklag,
@Luuklag Zaktualizował odpowiedź. Dziękuję za sugestię
kpratihast
Wydaje się, że jest to wyjątkowo wolna opcja
TeoTN
11

Jeśli próbowałeś sudo apt-get remove docker-composei otrzymałeś E: Unable to locate package docker-compose, wypróbuj tę metodę:

To polecenie musi zwrócić wynik, aby sprawdzić, czy jest tutaj zainstalowane:

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

Usuń starą wersję:

sudo rm -rf docker-compose

Pobierz ostatnią wersję (sprawdź oficjalne repozytorium: docker / compose / release ):

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

(w razie potrzeby wymień 1.24.0 )

Na koniec zastosuj uprawnienia wykonywalne do pliku binarnego:

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

Sprawdź wersję:

docker-compose -v
Zależność
źródło
5

Oto kolejny oneliner do zainstalowania najnowszej wersji docker-compose przy użyciu curl i 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
źródło
2

użyj tego z linii poleceń: 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

Zapisz najnowszą wersję wydania

Zastosuj uprawnienia wykonywalne do pliku binarnego:

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

Następnie wersja testowa:

$ docker-compose --version
Md. Tanvir Rahaman
źródło
2

Próbowałem zainstalować docker-compose na „Ubuntu 16.04.5 LTS”, ale po zainstalowaniu go w ten sposób:

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

Dostawałem:

-bash: / usr / local / bin / docker-compose: Odmowa uprawnień

a kiedy używałem go z sudo, otrzymywałem:

sudo: docker-compose: nie znaleziono polecenia

Oto kroki, które podjąłem i rozwiązałem problem:

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
źródło
1

Po wielu poszukiwaniach sposobów wykonania tego, skończyło się na używaniu jqi mam nadzieję, że mogę go rozszerzyć, aby obsługiwać inne repozytoria poza Docker-Compose bez zbytniego nakładu pracy.

# 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
dragon788
źródło
1

Jeśli masz homebrew, możesz również zainstalować za pośrednictwem brew

$ brew install docker-compose

To dobry sposób na instalację w systemie Mac OS

Kristian Mandrup
źródło
1

Na Ubuntu Desktop 18.04.2 mam usuniętą ścieżkę „local” podczas używania polecenia curl do zainstalowania pakietu i działa dla mnie. Zobacz powyższą odpowiedź Kshitij.

Złupić
źródło
1

Jeśli zainstalowałeś za pomocą pip, aby zaktualizować, możesz po prostu użyć:

 pip install --upgrade docker-compose

lub jak wyraźnie stwierdza Mariyo z pip3:

 pip3 install --upgrade docker-compose
Branimir Valentić
źródło
w moim przypadku było topip3 install --upgrade docker-compose
Mariyo