2016-12-19 1 views
2

У меня есть приложение с простым угловым приложением. бэкэнд можно рассматривать как услугу (внешний api), так что ни одна из сторон не нужна вообще. Я хотел бы запустить его на докере, однако, я не уверен, что является лучшей практикой здесь. то, что я ожидал, чтобы достичь является следующее:угловое приложение с докером - производство и разработка

  1. докер должен быть в состоянии выполнить все, что я делал на место с nodejs - с помощью WebPack/черновой/глотки без необходимости устанавливать что-либо на моей локальной машине + убедившись, что каждый член команды работает над одной и той же версией в основном всего.
  2. докер должен быть в состоянии быть развернут на производство легко и работать так же легко, как это возможно (его просто статическое содержимое!)

реальная проблема в том, что, насколько я понимаю, DEV докер должен быть основан на nodejs с установленным томом и всем .. однако, производственный докер должен быть супер простым nginx-сервером, который обслуживает статический контент. поэтому я мог бы получить 2 отдельных докеры, которые используют одну и ту же базу кода. не уверен, что это правильный путь.

может кто-нибудь пролить свет на эту тему? спасибо

ответ

1

Ваши идеи выглядят нормально. Обычно я создаю сценарий bash (так как для меня он достаточно гибкий) для развертывания различных сред в соответствии с требованием (dev & prod).

создал Предполагается Баш скрипт deployApp.sh

sh deployApp.sh `{dev or prod}` 

Таким образом, вы можете также создать (или выключатель) Dockerfile на лету в соответствии со средой и строить свое приложение с этим Dockerfile. Таким образом, вы можете управлять своими требованиями к среде prod (только для nginx развертывания с созданными пакетами и т. Д.), Что вам нужно соответственно.

Пример о создании deployApp.sh:

webpack `{if other required parameters here}` #created bundle.js etc. 

#After webpack operations , choose Dockerfile for prod or dev : 
#./prod/Dockerfile , ./dev/Dockerfile 

#check if first parameter is prod or dev 
docker build -f ./prod/Dockerfile #this will build nginx based container 
#and copy needed files&folders 

Это просто подход в соответствии с вашей идеей, и я использую, как этот подход. Вы просто создаете эту настройку один раз. Также вы можете применить другие проекты, если это подходит.

+0

Почему мне действительно нужен файл bash? поэтому мы получили 2 докерных файла - мы можем просто использовать их соответственно. например, используйте dev один локально, используя хороший докер-композитор, и используйте другой с jenkins (возможно, у него также есть другой готовый докер). я могу даже сказать, что производственные файлы (файл dockerfile & docker-compose) могут быть созданы «на лету» с помощью компьютера build/deploy, и разработчики никогда не узнают о них. что вы думаете? –

+0

@BenYitzhaki Я еще не использовал докер-состав. Итак, если вы знаете, что этого достаточно для выполнения операций с помощью файла .yml с помощью docker, конечно, вы можете использовать этот способ, скрипт bash в действительности не является обязательным в этой ситуации. –