Комментарии 13
Значения переменных для продакшена используются в качестве значений по
умолчанию, это минимизирует риски в случае запуска стека в продакшене без
установленной переменной окружения.
Обычно вроде наоборот чтобы, например, при запуске тестов случайно не разослать всем смс.
Посмотрел документацию и нашел там такой синтаксис, может будет полезно в данном случае:
${VARIABLE:?err} - выходит с ошибкой, если VARIABLE не установлено или пусто.
${VARIABLE?err} - выходит с ошибкой, если VARIABLE не установлен.
Зачем тогда 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 просто делает docker run и еще пару команд. Зачем на проде эта прослойка на python в процессах? Можно использовать https://docs.ansible.com/ansible/latest/modules/docker_container_module.html, синтаксис почти тот же (по ссылке, в конце страницы, примеры), только не оставляет следов на машине, кучей дополнительный батареек вроде ролей и хоть какой-то адекватной возможностью сделать rolling update.
Docker Compose: от разработки до продакшена