2016-12-19 30 views
2

我有一个简单的AngularJS应用程序。后端可以像服务一样处理(外部API),所以根本不需要服务端。我想在Docker上运行它,但是,我不确定这里的最佳实践是什么。 什么我期待实现如下:角码应用程序与码头 - 生产与开发

  1. 泊坞窗应该能够运行一切,我与当地的NodeJS做 - 使用的WebPack /咕噜/一饮而尽,而无需安装我的本地机器上的任何内容+确保每个团队成员都在基本上所有内容的相同版本上工作。
  2. 泊坞窗应该能很容易地部署到生产和轻微跑越好(它只是静态的内容!)

,真正的问题是,据我了解,在开发搬运工,应根据在nodejs上安装了卷和所有东西..但是,生产docker应该是超级简单的nginx服务器,它提供静态内容。所以我可能会得到一个使用相同代码库的2个独立的docker。不知道这是正确的方式去..

任何人都可以提供一些线索在这个话题?感谢

回答

1

你的想法似乎确定。我通常创建一个bash脚本(对我来说它足够灵活),根据需要部署不同的环境(dev & prod)。

假定创建了一个bash脚本deployApp.sh

sh deployApp.sh `{dev or prod}` 

所以,你也可以动态创建(或交换机)Dockerfile根据您的环境以及与此Dockerfile构建应用程序。所以你可以分别管理你的prod环境需求(只有通过webpack创建的bundle才能部署到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个dockerfiles - 我们可以相应地使用它们。例如,使用一个不错的码头作曲者在本地使用开发人员,并使用另一个与詹金斯(可能有不同的预制码头作曲者)。我甚至可以说生产文件(dockerfile和docker-compose文件)可以由构建/部署计算机即时创建,开发人员永远不会知道它们。你怎么看? –

+0

@BenYitzhaki我还没有使用码头组合。所以如果你知道这对于通过docker-compose.yml文件进行的操作是足够的,当然你可以使用这种方式,但在这种情况下,bash脚本并不是必须的。 –