docker-如何解决container服务中配置文件个性化的问题

问题描述

  1. 传统的服务中,如果我们需要修改nginx的配置,只需要对nginx.conf进行修改,然后重启nginx的服务即可生效
  2. 在docker搭建中,如果我们的image中已经使用了nginx.conf的配置文件,那么我docker run的container的配置文件和image中的配置文件是一致的,如果我想修改container中nginx的log路径,我应该怎么做呢?
  3. 是不是我需要这样,首先修改nginx.conf 然后再commit当前container,最后再push当前container,如果我需要运行两个container有不一致的nginx.conf呢?

解决方案

  1. 通过env传递,但是仅限于很简单的配置,像nginx这样的配置文件是不太可能使用这种方式
  2. 通过volume挂载宿主机文件,但如果在集群中,容器漂移到其他宿主机就找不到配置文件,缺乏横向扩展
    docker run -t -i -d -p 8004:80 –name=pay_game -h 127.0.0.1 -v ~/Desktop/devspace/apo_api:/data1/htdocs/apo_api -v ~/Desktop/devspace/apo_api/project/config/nginx/vhosts:/usr/local/openresty/nginx/conf/vhosts lnmpr
  3. 使用zookeeper或者etcd来存放配置文件数据,创建容器时通过 ENV 传递配置文件的 KEY,应用启动前用 KEY 拉取配置文件,然后启动应用

查看容器启动时的命令

docker inspect pay_game
坚持原创技术分享,您的支持将鼓励我继续创作!