docker-compose服务的集中配置

时间:2015-11-02 12:57:09

标签: database docker config docker-compose microservices

想象一个非平凡的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项目中管理配置的正确方法是什么?

1 个答案:

答案 0 :(得分:3)

通常,您会发现大多数容器使用入口点脚本通过使用环境变量填充配置文件来配置应用程序。有关此方法的高级示例,请参阅entrypoint scriptWordpress official image

因为这是一种常见的模式,Jason Wilder创建了dockerize项目来帮助自动化该过程。