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
文件,我如何重新加载容器以使用新的环境变量,并减少停机时间?
最佳答案
如果您使用 docker-compose 运行 yml,则只需运行 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
如果您将容器作为具有版本 3 文件格式的 docker stack deploy -c docker-compose.yml
运行,您可以对服务进行滚动更新,这样可以防止任何停机时间运行您的服务的多个实例。此功能仍然很新,您需要 1.13.1 修复一些更新问题,并且与任何新功能一样,错误仍在解决中。
关于docker - 如何以最少的停机时间在 docker-compose 容器中重新加载环境变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42149529/