Как стать автором
Обновить

Комментарии 12

Значения переменных для продакшена используются в качестве значений по
умолчанию, это минимизирует риски в случае запуска стека в продакшене без
установленной переменной окружения.

Обычно вроде наоборот чтобы, например, при запуске тестов случайно не разослать всем смс.
Посмотрел документацию и нашел там такой синтаксис, может будет полезно в данном случае:
${VARIABLE:?err} - выходит с ошибкой, если VARIABLE не установлено или пусто.
${VARIABLE?err} - выходит с ошибкой, если VARIABLE не установлен.
А почему и в продакшене не запускать командой docker-compose up -d? В чем профит docker stack deploy?
Для docker stack не нужно ставить docker-compose, все сделает сам docker, ну и еще docker-compose не поддерживает вот это docs.docker.com/compose/compose-file/#deploy

Зачем тогда docker-compose нужен?

Для docker stack нужно создать swarm-рой хотя бы из одной машины и плюс он не поддерживает инструкцию build, требуя уже готовых образов. Поэтому его все же приходиться использовать в режиме разработки, но есть и другие отличия — docs.docker.com/compose/compose-file/#service-configuration-reference

Сейчас нельзя от него окончательно избавиться, но все к тому идет — скоро будет можно

docker swarm init набрать — это не рокет сайенс. Билд — возможно удобнее, хотя, кажется docker-compose не очень отслеживает изменения исходников

Коротко: docker-compose up -d — только для одного сервера, docker stack deploy — для множества объединенных в кластер Swarm.


И в продакшене можно, вопрос как именно используется инфраструктура. Если имеется один сервак, то бонуса от Swarm не будет. А вот если серверов много, их может быть проще объединить в Swarm-кластер и управлять всем из одной точки, а не бегать по SSH между серваками или постоянно переключать контекст Docker. Использование кластера Swarm может дать много плюсов, но это тема для отдельной статьи.

Если имеется один сервак, то бонуса от Swarm не будет.

Будет, если нужно будет срочно добавить второй-третий сервер. Или просто несколько реплик одного сервиса на одном серваке скэйлить.

По поводу добавить новые сервер Swarm — однозначно согласен. А вот масштабироваться можно и с помощью docker-compose up --scale service=N.

но это ведь вручную, что всегда неудобно, а количество реплик можно указать в docker-compose.yml

Docker-compose просто делает docker run и еще пару команд. Зачем на проде эта прослойка на python в процессах? Можно использовать https://docs.ansible.com/ansible/latest/modules/docker_container_module.html, синтаксис почти тот же (по ссылке, в конце страницы, примеры), только не оставляет следов на машине, кучей дополнительный батареек вроде ролей и хоть какой-то адекватной возможностью сделать rolling update.

Этот модуль ансибль делает то же самое, нет? И с помощью того же Docker SDK for Python, да? Ну и docker-compose на проде не висит в процессах, его вообще на прод можно не ставить.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий