想象一个非平凡的docker compose应用,在网络应用程序前面有nginx,以及一些链接的数据存储:
web:
build: my-django-app
volumes:
- .:/code
ports:
- "8000:8000"
links:
- redis
- mysql
- mongodb
nginx:
image: nginx
links:
- web
redis:
image: redis
expose:
- "6379"
mysql:
image: mysql
volumes:
- /var/lib/mysql
environment:
- MYSQL_ALLOW_EMPTY_PASSWORD=yes
- MYSQL_DATABASE=myproject
mongodb:
image: mongo
数据库很容易配置(现在),容器暴露了非常好的环境变量来控制它们(参见mysql
容器),但nginx
是什么?我们需要为此模拟一个vhost文件,对吧?
我不想推出自己的图像,需要从不同的开发'中为每个更改的配置重建。设置,测试,暂存和生产。如果我们想以轻量级方式通过翻转配置选项进行 A / B测试,该怎么办?
这里需要一些集中配置管理,也许是由docker-compose控制的,可以将配置文件写入共享卷?
随着新服务的增加,这将变得更加重要(想象一下微服务云,而不是像本例中的单片网络应用程序)
在docker-compose项目中管理配置的正确方法是什么?
答案 0 :(得分:3)
通常,您会发现大多数容器使用入口点脚本通过使用环境变量填充配置文件来配置应用程序。有关此方法的高级示例,请参阅entrypoint script的Wordpress official image。
因为这是一种常见的模式,Jason Wilder创建了dockerize项目来帮助自动化该过程。