docker-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文件,如何在最小的停机时间内重新加载容器以使用新的环境变量?
.env
如果您使用docker-compose运行yml,则可以运行docker-compose up -d它,它将重新创建所有具有更改的容器,并保持所有不变的服务不变。
docker-compose up -d
$ 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
如果您docker stack deploy -c docker- compose.yml使用版本3文件格式运行容器,则可以对服务进行滚动更新,如果您有多个服务实例在运行,它将防止任何停机。此功能仍是非常新的功能,您需要1.13.1修复某些更新问题,并且与任何新功能一样,错误仍在解决中。
docker stack deploy -c docker- compose.yml