我已经构建了一个简单的Docker Compose项目作为开发环境。我有PHP-FPM,Nginx,MongoDB和Code容器
现在我想自动化流程并部署到生产中
docker-compose.yml
可以扩展,可以定义多个环境。有关详细信息,请参阅https://docs.docker.com/compose/extends/
但是,我的容器有Dockerfiles。对于开发环境来说,需要更多的包而不是生产环境。
主要问题是我应该为dev
和prod
使用单独的dockerfiles并在docker-compose.yml
和production.yml
中管理它们吗?
单独的dockerfiles很容易,但代码重复。
另一个解决方案是使用环境变量并以某种方式从bash脚本处理它们(可能作为入口点?)。
我正在寻找其他想法。
答案 0 :(得分:1)
...比如,你可能想要定义一个单独的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。或者你可以创建自己的。