Docker 在生产中编写?

Docker compose in production?

我计划使用 docker 构建我的开发和生产环境。我构建了基于 Django 的应用程序。

在开发中,我使用 docker-compose 来管理所有本地容器。这是一个不错且方便的解决方案。我 运行 Django,3 个芹菜队列,rabbitmq,2 个 postgresql 数据库。

但我的生产环境却大不相同。我需要 运行 gunicorn 和 nginx。此外,数据库将 运行 使用 AWS RDS。当然,Django 应用程序需要更多的东西,比如不同的设置文件或更多的环境变量。

我在纠结怎么分。我也应该 docker-compose 吗?这将需要用于开发和生产的单独文件,将来可能需要更多文件用于暂存等......如果是,如何部署它?使用 Jenkins,拉取,重新启动全部使用 compose?

或者我应该直接对 运行 docker 命令使用 ansible?但是后来我没有信心我的开发与现场一样,而且更难预测它的行为。

我喜欢 运行 在所有环境中组合文件的想法,但我不确定为不同环境维护多个文件是否是个好主意。 Dev 需要更少的环境变量和更少的配置。我可以使用 env 文件将它们全部设置为生产环境。但是我应该在 se repo 中保留我的实时设置吗?以前我在配置时设置所有环境变量,这是单独的过程。现在看起来 provisioning 和 deploy 是一样的?也许这就是 Docker?

的方式

使用 http://docs.docker.com/compose/extends/#multiple-compose-files,您可以将所有常用内容保存在 docker-compose.yml 中,并使用 docker-compose.prod.yml 添加额外的服务,更改链接、环境和端口。