Docker撰写开发和生产环境最佳工作stream程
我已经构build了一个简单的Docker Compose项目作为开发环境。 我有PHP-FPM,Nginx,MongoDB和Code容器。
现在我想要自动化这个过程并部署到生产环境。
docker-compose.yml
可以扩展,并可以定义多个环境。 有关更多信息,请参阅https://docs.docker.com/compose/extends/ 。
但是,我的容器有Dockerfiles。 而对于开发环境来说,需要比生产更多的软件包。
主要问题是我应该使用单独的dockerfiles dev
和prod
,并在docker-compose.yml
和production.yml
pipe理它们?
单独的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自己的。
- 如何设置将root用户的所有环境variables复制到另一个特定的用户
- 什么时候,在哪里以及如何在Visual Studio 2017中设置DOCKER_BUILD_SOURCE环境variables
- Docker入口脚本无法获得$ DB_PORT_3306_TCP_ADDR环境variables
- 在容器中设置ENVvariables不工作,是否在容器运行时执行“/ usr / local / bin”下的每一个?
- 我怎样才能使用一个环境variables作为docker集装箱的名称?
- 通过应用程序使用的jar文件传递环境variables
- Dockerfile中带有双星号的环境variables
- Docker的12factorconfiguration方法
- 在Docker容器中不能更改环境variables