Как обновить docker-compose до последней версии

102

Я установил docker-compose с помощью команды

sudo apt install docker-compose

Он установил docker-compose версии 1.8.0 и сборку неизвестно

Мне нужна последняя версия docker-compose или хотя бы версия 1.9.0

Может ли кто-нибудь сообщить мне, какой подход я должен предпринять, чтобы обновить его или удалить и переустановить последнюю версию.

Я проверил сайт докеров и вижу, что они рекомендуют это для установки последней версии '

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

Но перед этим мне нужно удалить текущую версию, что можно сделать с помощью команды

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

но это можно использовать только тогда, когда установка производилась с помощью curl. Я не уверен, была ли установка выполнена с помощью curl, поскольку я использовал

sudo apt install docker-compose

Пожалуйста, дайте мне знать, что мне теперь делать, чтобы удалить и переустановить docker-compose.

Sam_2207
источник

Ответы:

131

Сначала удалите старую версию :

Если установлено через apt-get

sudo apt-get remove docker-compose

Если установлено через curl

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

Если установлено через pip

pip uninstall docker-compose

Затем найдите новейшую версию на странице выпуска в GitHub или скрутите API, если вы jqустановили (спасибо dragon788 и frbl за это улучшение):

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

Наконец, загрузите в ваше любимое место, доступное для $ PATH, и установите разрешения:

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
Эрик М. Джонсон
источник
2
попробуйте обновить путь в / usr / local / bin / docker-compose, а затем запуститеsudo chmod +x /usr/bin/docker-compose
Радж Кумар Гоял,
2
Не нужно перемещать файл. /usr/local/binПуть должен быть $PATHуже. Как раз chmodна месте. Ответ обновлен, чтобы отразить это.
Gold
4
Вы, наверное, захотите сделать, sudo chmod 755 $DESTINATIONа не просто+x
Нео
2
Нео, хороший улов. Обычно я просто корректирую завивку в соответствии со своими потребностями, если другие вещи настроили вещи так, как им нужно. Но вот скачиваем свежий файл. Установка всех химических завивок имеет смысл.
Gold
2
@Rebar Не могли бы вы уточнить, до чего вы хотите обновить путь? /usr/local/bin- довольно стандартное место для размещения глобальных двоичных файлов, не управляемых системой упаковки. В ответе также упоминается указание «вашего любимого местоположения, доступного для $ PATH», что указывает на корректировку, если ваше $PATHдругое.
Эрик М. Джонсон
37

Самый простой способ иметь постоянное и устойчивое решение для установки Docker Compose и способ его обновления - просто использовать пакет диспетчера пакетов с:

pip install docker-compose

Я искал хорошее решение уродливой проблемы «как обновить до последнего номера версии», которая возникла после того, как вы прочитали официальную документацию - и просто время от времени находили ее - просто взгляните на команду docker-compose package - он должен отражать (в основном) текущий номер последней выпущенной версии Docker Compose .

Менеджер пакетов - всегда лучшее решение для управления установками программного обеспечения! Таким образом, вы просто абстрагируетесь от самостоятельной обработки версий.

jonashackt
источник
2
+1 отличный ответ. Раньше: у меня была версия docker-compose: docker-compose версия 1.21.2, build a133471 Итак, для обновления до последней версии, отличной от RC, я обнаружил, что это работает для обновления: 1) apt install python-pipустановить PIP, затем pip install docker-composeустановить последнюю и затем проверить версию: docker-compose --versionкоторая дала мне: docker-compose версия 1.23.2, сборка 1110ad0
therobyouknow
pip install docker-composeдавал мне «Требование уже выполнено: docker-compose», поэтому я должен был сделать, apt-get purge docker-composeа hash -d docker-composeзатем pip install docker-composeполучить docker-compose 1.24 на Ubuntu 18.04.
krubo 01
После установки docker-compose by pip я обнаружил эту ошибку:ImportError: cannot import name 'Context'
Беньямин Джафари,
Итак, чтобы справиться с этой ошибкой, я переустановил dockerпакетpip
Беньямин Джафари,
17

Основываясь на ответе @ eric-johnson, в настоящее время я использую это в сценарии:

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

он берет последнюю версию из API GitHub.

frbl
источник
Я столкнулся с ошибкой в ​​4-й строке zsh: parse error near :) ''
Беньямин Джафари
только что протестировал его здесь, но, похоже, он работает нормально (debian 10 с zsh). Вы уверены, что правильно скопировали?
frbl 01
Попробуйте заключить URL-адреса в двойные кавычки, так как иногда оболочка может немного цепляться.
dragon788
15

Если вышеуказанные методы не работают для вас, обратитесь к этому ответу: 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
кпратихаст
источник
3
Хотя эта ссылка может дать ответ на вопрос, лучше включить сюда основные части ответа и предоставить ссылку для справки. Ответы, содержащие только ссылки, могут стать недействительными, если ссылка на страницу изменится. - Из
отзыва
@Luuklag Обновил ответ. Спасибо за предложение
kpratihast
Вроде бы крайне медленный вариант
TeoTN
10

Если вы пытались sudo apt-get remove docker-composeи получили E: Unable to locate package docker-compose, попробуйте этот метод:

Эта команда должна вернуть результат, чтобы проверить, что она установлена ​​здесь:

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

Удалите старую версию:

sudo rm -rf docker-compose

Загрузите последнюю версию (проверьте официальное репо: 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

( при необходимости замените 1.24.0 )

Наконец, примените к двоичному файлу разрешения для исполняемого файла:

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

Проверить версию:

docker-compose -v
Зависимость
источник
5

Вот еще один инструмент для установки последней версии docker-compose с помощью curl и 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
Якоб Эриксон
источник
2

используйте это из командной строки: 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

Запишите последнюю версию выпуска

Примените разрешения для исполняемого файла к двоичному файлу:

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

Тогда тестовая версия:

$ docker-compose --version
Md. Tanvir Rahaman
источник
1

После долгих поисков способов сделать это я в конечном итоге использовал jq, и, надеюсь, смогу расширить его для обработки других репозиториев помимо Docker-Compose без особых усилий.

# 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
дракон788
источник
1

Если у вас есть homebrew, вы также можете установить через brew

$ brew install docker-compose

Это хороший способ установки в системе Mac OS.

Кристиан Мандруп
источник
1

На рабочем столе ubuntu 18.04.2 у меня удален «локальный» из пути при использовании команды curl для установки пакета, и это работает для меня. См. Ответ Кшитиджа выше.

Гарри
источник
1

Если вы установили с помощью pip, для обновления вы можете просто использовать:

 pip install --upgrade docker-compose

или, как прямо заявляет Марио с pip3:

 pip3 install --upgrade docker-compose
Бранимир Валентич
источник
в моем случае это былоpip3 install --upgrade docker-compose
Мариё
1

Я пытался установить docker-compose на "Ubuntu 16.04.5 LTS", но после его установки вот так:

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

Я получал:

-bash: / usr / local / bin / docker-compose: в доступе отказано

и пока я использовал его с sudo, я получал:

sudo: docker-compose: команда не найдена

Итак, вот шаги, которые я предпринял и решил свою проблему:

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
АрминМз
источник