如何在docker-compose容器中重新加载环境变量,停机时间最短?

时间:2017-02-10 00:33:53

标签: docker docker-compose

搬运工-compose.yml

version: '2'
services:
  app:
    build:
      context: .
    command: python src/app.py
    restart: on-failure
    depends_on:
      - db
    environment:
      - TJBOT_DB_HOST=db
      - TJBOT_API_KEY
      - TJBOT_AUTO_QUESTION_TIME
    env_file:
      - .env
  db:
    image: mongo:3.0.14
    volumes:
      - mongodbdata:/data/db
volumes:
  mongodbdata:

如果我更改.env文件,我怎样才能重新加载容器以使用新环境变量并减少停机时间?

1 个答案:

答案 0 :(得分:51)

如果您使用docker-compose运行yml,则只需运行{ "query": { "function_score": { "query": { "bool": { "must": { "match": { "keywords": { "query": "trump" } } }, "should": [ { "match": { "type": { "query": "headline" } } } ] } }, "functions": [ { "gauss": { "versioncreated": { "origin": "now/d", "scale": "50w", "offset": "4w", "decay": "0.5" } } } ], "boost": 5, "score_mode": "sum" } } } ,它将重新创建任何已更改的容器,并保持所有未更改的服务不变。

docker-compose up -d

如果您使用版本3文件格式的$ cat docker-compose.env2.yml version: '2' services: test: image: busybox # command: env command: tail -f /dev/null environment: - MY_VAR=hello - MY_VAR2=world test2: image: busybox command: tail -f /dev/null environment: - MY_VAR=same ole same ole $ docker-compose -f docker-compose.env2.yml up -d Creating network "test_default" with the default driver Creating test_test_1 Creating test_test2_1 $ vi docker-compose.env2.yml # edit the file to change MY_VAR $ docker-compose -f docker-compose.env2.yml up -d Recreating test_test_1 test_test2_1 is up-to-date 运行容器,则可以对服务进行滚动更新,以防止在运行多个服务实例时出现任何停机。这个功能仍然很新,你希望1.13.1修复一些更新的问题,就像这个新的东西一样,bug仍在制定中。