我计划使用docker来构建我的开发和生产环境。我构建基于Django的应用程序。
在开发中我使用docker-compose
来管理所有本地容器。这是一个不错而方便的解决方案。我运行Django,3个celery队列,rabbitmq,2个postgresql DB。
但我的生产环境却截然不同。我需要运行gunicorn和nginx。此外,DB将使用AWS RDS运行。当然Django应用程序将需要更多的东西,比如不同的设置文件或更多的env vars。
我在徘徊如何划分它。我也应docker-compose
吗?这将需要dev和prod的单独文件,将来可能更多用于登台等...如果是,如何部署它?使用Jenkins,拉,使用compose重新启动所有?
或许我应该使用ansible直接运行docker
命令?但后来我不相信我的开发与现场相同,而且很难预测它的行为。
我喜欢在所有环境中运行撰写文件的想法,但我不确定是否为不同的环境维护多个文件是个好主意。 Dev需要更少的环境和更少的配置。我可以使用env文件在生产中设置所有这些文件。但是我应该将我的实时设置保留在se repo中吗?以前我在配置时设置了所有env变量,这是一个单独的过程。现在看来配置和部署是一样的吗?也许这是Docker的方式?
答案 0 :(得分:9)
使用http://docs.docker.com/compose/extends/#multiple-compose-files,您可以将所有常见内容保留在docker-compose.yml
中,并使用docker-compose.prod.yml
添加额外服务,更改链接,环境和端口。