【发布时间】:2016-03-09 21:43:52
【问题描述】:
我正在使用 docker-compose/docker-machine 构建一个 ELK (elasticsearch/logstash/kibana) 堆栈。该计划是将其部署到数字海洋液滴中,并在需要时使用 Swarm 对其进行扩展。
它工作得非常好,但我有点困惑我应该在哪里存储服务的配置(例如,logstash 的配置文件,或 nginx 的 SSL 证书)。
起初,我只是挂载了一个主机目录作为卷。问题是所有配置文件都必须在 docker 主机上可用,所以我必须将它们同步到 digitalocean droplet。
然后我觉得我有一个非常聪明的想法:创建一个包含所有配置的数据容器,并让其他服务使用volumes_from访问它:
config:
volumes:
- /conf
build:
context: .
# this just copies the conf folder into the image
dockerfile: /dockerfiles/config/Dockerfile
logstash:
image: logstash:2.2
volumes_from:
- config
这种方法的问题很快就变得很明显:每次我更改任何配置时,我都需要停止链接到配置容器的所有容器,重新创建配置映像和容器,然后再次启动服务。不适合正常运行时间:(。
那么,最好的方法是什么?理想情况下,配置文件应该在一个容器中,所以我可以将它发送到任何地方。
【问题讨论】:
-
如果您的配置不断变化,无论如何您都必须进行某种同步(与 docker 主机或容器同步)。
标签: docker docker-compose docker-machine