Среда разработки с Docker и развертывание в AWS Elastic Beanstalk

Я пишу PHP-приложение и хочу, чтобы среда разработки была контейнером Docker. Для этого я создал Dockerfile в корне моего проекта, который устанавливает все пакеты, необходимые для моего приложения, копирует файлы конфигурации в контейнер и затем устанавливает мое приложение.

Это работает нормально, но теперь мне нужно сообщить моему PHP-приложению, в какой среде оно находится, development или же production, Это также легко, я могу просто добавить это к моему Dockerfile:

ENV environment development

Теперь, когда я создаю свой образ, мое приложение PHP запускается в development Режим. Отлично, теперь я могу создать свое приложение внутри контейнера Docker!

Но что произойдет, когда я захочу развернуть это приложение на рабочем сервере (в частности, AWS Elastic Beanstalk)? Если я указал в моем Dockerfile что среда developmentмое приложение не будет работать в режиме разработки при развертывании в Elastic Beanstalk?

-1

Решение

Установка переменной среды — хороший способ сделать это; однако, делая это в Dockerfile, вы устанавливаете его для любых контейнеров, полученных из этого изображения. То, что вы действительно хотите сделать, это установить его в зависимости от контейнера. Способ сделать это, установив его при запуске контейнера:

Для развития:

docker run --env environment=development my-image

И для производства:

docker run --env environment=production my-image

Обратите внимание, что это будет работать, даже если вы установите переменную окружения в вашем Dockerfile — переменные, установленные с docker run --env переопределит значения, установленные в Dockerfile.

2

Другие решения

Других решений пока нет …