Comments 12
Значения переменных для продакшена используются в качестве значений по
умолчанию, это минимизирует риски в случае запуска стека в продакшене без
установленной переменной окружения.
Обычно вроде наоборот чтобы, например, при запуске тестов случайно не разослать всем смс.
Посмотрел документацию и нашел там такой синтаксис, может будет полезно в данном случае:
${VARIABLE:?err} - выходит с ошибкой, если VARIABLE не установлено или пусто.
${VARIABLE?err} - выходит с ошибкой, если VARIABLE не установлен.
Зачем тогда docker-compose нужен?
Сейчас нельзя от него окончательно избавиться, но все к тому идет — скоро будет можно
Коротко: docker-compose up -d
— только для одного сервера, docker stack deploy
— для множества объединенных в кластер Swarm.
И в продакшене можно, вопрос как именно используется инфраструктура. Если имеется один сервак, то бонуса от Swarm не будет. А вот если серверов много, их может быть проще объединить в Swarm-кластер и управлять всем из одной точки, а не бегать по SSH между серваками или постоянно переключать контекст Docker. Использование кластера Swarm может дать много плюсов, но это тема для отдельной статьи.
Docker-compose просто делает docker run и еще пару команд. Зачем на проде эта прослойка на python в процессах? Можно использовать https://docs.ansible.com/ansible/latest/modules/docker_container_module.html, синтаксис почти тот же (по ссылке, в конце страницы, примеры), только не оставляет следов на машине, кучей дополнительный батареек вроде ролей и хоть какой-то адекватной возможностью сделать rolling update.
Docker Compose: от разработки до продакшена