2015-07-28 1 views
4

Я создал простой проект Docker Compose в качестве среды разработки. У меня есть контейнеры PHP-FPM, Nginx, MongoDB и Code.
Теперь я хочу автоматизировать процесс и развернуть его на производство.
docker-compose.yml может быть расширен и может определять несколько сред. См. https://docs.docker.com/compose/extends/ для получения дополнительной информации.
Однако для моих контейнеров есть Dockerfiles. И для среды разработчиков требуется больше пакетов, чем в производстве.Docker Compose Dev и производственные среды Лучший рабочий процесс

Основной вопрос, я должен использовать отдельные dockerfiles для dev и prod и управлять ими в docker-compose.yml и production.yml?
Отдельные докерные фильтры - это простой подход, но есть дублирование кода.

Другое решение - использовать переменные среды и как-то обрабатывать их из сценария bash (возможно, как entrypoint?).

Я ищу другие идеи.

ответ

1

По the official docs:

... вы, вероятно, хотите, чтобы определить отдельный файл Compose, скажем production.yml, которая определяет производство-соответствующая конфигурация.

Примечание: extends ключевого слова полезно для поддержания нескольких Compose файлов, которые повторно использовать общие службы без необходимости вручную копировать и вставлять .

+2

Да, но я все же должен был установить некоторые пакеты для сред dev и prod, и это делается в Dockerfile. Но dockerfiles не имеет управляющих структур, таких как другие языки, поэтому вы не можете контролировать, что устанавливать в зависимости от среды. –

+0

, в этом случае, возможно, вам захочется использовать возможность использования. он работает следующим образом: используйте файл Docker, чтобы загружать изображение с возможностью его использования, а затем разрешить проблему. Если вы хотите пройти весь путь и автоматизировать все, тогда вы начнете с доступных игрушек для создания изображений Docker на вашей локальной машине; затем запустите их в частный (или общедоступный) реестр (также запустите внутри док-станции :), затем напишите загружаемые книги для загрузки этих изображений на удаленных хостах и ​​запустите контейнеры – milan

+0

Это можно решить, если у вас есть отдельные Dockerfiles для разработки и производства (я думаю, вы могли бы имеют общую базу). – Fuzzy76

1

В версии docker-compose версии = = 1.5.0 вы можете использовать environment variables, может быть, это подходит вам?

0

Если пакеты, необходимые для разработки, не слишком тяжелые (то есть размер изображения не имеет значительного увеличения), вы можете просто создать Dockerfile с, включающие все компоненты, а затем решить, следует ли их активировать на основе значения переменная среды в точке входа.

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

0

В этой ситуации может потребоваться использование изображения «onbuild» для обработки общности между средами, а затем с использованием отдельных изображений для обработки специфических особенностей. Некоторые официальные изображения имеют встроенные версии, например, Node. Или вы можете создать свой собственный.

 Смежные вопросы

  • Нет связанных вопросов^_^