Docker撰写开发和生产环境最佳工作流程

时间:2015-07-28 02:45:28

标签: docker environment-variables dockerfile docker-compose

我已经构建了一个简单的Docker Compose项目作为开发环境。我有PHP-FPM,Nginx,MongoDB和Code容器 现在我想自动化流程并部署到生产中 docker-compose.yml可以扩展,可以定义多个环境。有关详细信息,请参阅https://docs.docker.com/compose/extends/ 但是,我的容器有Dockerfiles。对于开发环境来说,需要更多的包而不是生产环境。

主要问题是我应该为devprod使用单独的dockerfiles并在docker-compose.ymlproduction.yml中管理它们吗? 单独的dockerfiles很容易,但代码重复。

另一个解决方案是使用环境变量并以某种方式从bash脚本处理它们(可能作为入口点?)。

我正在寻找其他想法。

4 个答案:

答案 0 :(得分:1)

根据the official docs

  

...比如,你可能想要定义一个单独的Compose文件   production.yml,指定适合生产的配置。

     

注意:extends关键字对于维护多个Compose非常有用   重用公共服务而无需手动复制的文件   糊。

答案 1 :(得分:1)

docker-compose版本> = 1.5.0中,您可以使用environment variables,这可能适合您吗?

答案 2 :(得分:0)

如果开发所需的软件包不是太重(即图像大小没有显着增大),您可以创建包含所有组件的Dockerfile,然后决定是否根据入口点中环境变量的值。

通过这种方式,您可以让主docker-compose.yml提供生产环境,而development.yml只需在需要时添加正确的环境变量值。

答案 3 :(得分:0)

在这种情况下,可能值得考虑使用“onbuild”图像来处理环境之间的共性,然后使用单独的图像来处理细节。一些官方图像具有onbuild版本,例如Node。或者你可以创建自己的。