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

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

主要问题是我应该使用单独的dockerfiles devprod ,并在docker-compose.ymlproduction.ymlpipe理它们?
单独的dockerfiles是简单的方法,但有代码重复。

另一种解决scheme是使用环境variables,并以某种方式从bash脚本(也许作为入口?)处理它们。

我正在寻找其他的想法。

根据官方文件 :

…你可能想要定义一个单独的Compose文件,比如production.yml ,它指定了与生产相关的configuration。

注意: extends关键字对于维护多个复用文件非常有用,它们可以重复使用常用服务,而无需手动复制和粘贴。

docker-compose版本> = 1.5.0中你可以使用环境variables ,可能是否适合你?

如果开发所需的软件包不是太重(例如,图像大小不是很大),您可以创build包含所有组件的Dockerfile ,然后根据环境variables的值来决定是否激活它们入口点。

这样你可以有主docker-compose.yml提供生产环境,而development.yml只是在需要的地方添加正确的环境variables值。

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