Как обновить docker-compose на prod-сервере, ничего не поломав?
Добрый день. Я джун, прод меня мало касается, и у меня даже нет туда доступов, но чисто из любопытства было бы интересно узнать мнения более опытных людей на этот счет.
Есть два сервера: тестовый и продакшн. Проблема в том, что на тестовом сервере версия docker-compose выше, чем на проде, и в этой версии есть —env-file флаг для указания файла с переменными окружения для бэкенда, а в версии на проде этого флага нет.
Вот и получается выбор: закостылять свой проект под более старую версию docker-compose, либо же рискнуть и обновить docker-compose до более новой версии, но я понимаю, что это может быть чревато.
Но все же, если подумать, неужели теперь все разработки на этом сервер обречены крутиться на старой версии docker-compose?) Странно это и нелогично. Значит, должен быть какой-то путь, как обновить docker-compose, не поломав при этом проекты.
- Вопрос задан 14 нояб. 2022
- 635 просмотров
Комментировать
Решения вопроса 1
Vitaly Karasik @vitaly_il1
DevOps Consulting
Ответ простой — обновляют docker-compose.
Варианта два:
1) если прод. сервер один, то просят время на downtime, обновляют, проверяют, возвращают в продакшен
2) если серверов несколько, то исключают один сервер из сервиса, обновляют, проверяют, подключают заново, и т.д. со следующими
Ответ написан 14 нояб. 2022
Комментировать
Нравится 3 Комментировать
Ответы на вопрос 1
ДевОпс Сисадмин
«Проблема в том, что на тестовом сервере версия docker-compose выше, чем на проде, и в этой версии есть —env-file флаг для указания файла «
А зачем вы используете разные по версиям ПО среды для тестирования/разработки и в проде? Такого быть не должно, если вы конечно не планируете апгрейд прода и обкатываете новую среду, но это уже не проблемы джуна.
Ответ написан 14 нояб. 2022
Нравится 3 1 комментарий
Sazoks @Sazoks Автор вопроса
Ну, если бы я знал) Так вот получилось. Надеюсь, в скором времени все обновят, а то на старой версии докера сидеть не охота.
Ваш ответ на вопрос
Войдите, чтобы написать ответ

- Docker
- +1 ещё
Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2) — почему?
- 1 подписчик
- 6 часов назад
- 22 просмотра
Обновление версии docker compose в ubuntu linux
моя система os is ubuntu, текущая docker-compose version was 1.25 но импортированное python-django web app has compose-file with version was 3. 9. как обновить мою систему docker-compose версии , чтобы я мог выполнить веб-приложение
Это зависит от версии Ubuntu, но обычно вы можете обновить docker-compose , установив самую новую возможную версию, как описано в официальной документации .
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose $ sudo chmod +x /usr/local/bin/docker-compose
Как обновлять только один контейнер через docker-compose?
У меня через docker compose запускаются несколько контейнеров — api, frontend, bot, .
Когда я вношу пару изменений в frontend, каждый раз приходится делать следующее:
docker-compose down (отрубает все контейнеры)
docker-compose pull frontend (закачивает новую версию образа)
docker-compose up (заново запускает с новым frontend)
Как можно обновлять один контейнер? Ведь получается, что когда я меняю только frontend, также останавливается и bot, который с frontend никак не связан
- Вопрос задан более года назад
- 828 просмотров
Комментировать
Решения вопроса 0
Ответы на вопрос 1

Associate DevOps Engineer
Ответ написан более года назад
Комментировать
Нравится 1 Комментировать
Ваш ответ на вопрос
Войдите, чтобы написать ответ

- Docker
- +1 ещё
Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2) — почему?
- 1 подписчик
- 6 часов назад
- 22 просмотра
Как обновить docker?
docs.docker.com/install/linux/docker-ce/ubuntu либо скачать бинарники download.docker.com/linux/static/stable/x86_64 и заменить в /usr/bin предварительно остановив dockerd (не рекомендую, но помогает в некоторых случаях)
26 мар 2019 в 10:07
@TotalPusher, не, бинарники — зло: ru.stackoverflow.com/a/907613/191416. Тока через пакетный менеджер, благо на бубунте всё должно взлететь.
26 мар 2019 в 22:45
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Логика во всех случаях и вкусах GNU/Linux одна и та же — добавляем официальные репозитории Docker и ставим последнюю версию:
GNU/Linux Debian Stretch+
# apt-get install apt-transport-https dirmngr ca-certificates software-properties-common # echo 'deb https://apt.dockerproject.org/repo debian-stretch main' >> /etc/apt/sources.list.d/docker.list # apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys F76221572C52609D # apt-get update # apt-get install docker-engine
GNU/Linux Ubuntu 18.0+
# apt-get install apt-transport-https dirmngr ca-certificates software-properties-common # Добавляем GPG ключи # curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - # add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable" # apt update # apt install docker-ce
GNU/Linux Fedora 28+
# dnf -y install dnf-plugins-core # source /etc/os-release # cat
centos/ debian/ fedora/ raspbian/ stalinux/ static/ ubuntu/
Можно конечно использовать NixOS, где контейнеры просто не нужны в виду нового подход доставки пакетов.
Ссылки
- https://download.docker.com/linux/
- https://discourse.nixos.org/t/is-there-much-difference-between-using-nix-shell-and-docker-for-local-development/807
- https://github.com/NixOS/nixops