How to reload environment variables in container container with minimal downtime?

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: 

If I modify the .env file, how can I reload the container to use the new environment variables with minimal downtime?

+7
docker docker-compose
source share
1 answer

If you run yml with docker-compose, you can just run docker-compose up -d and it will recreate any containers that have changes and leave all the services unchanged untouched.

 $ 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 

If you run containers like docker stack deploy -c docker-compose.yml with a version 3 format file, you can perform a rolling service update that will prevent downtime if you have multiple instances of your service. This functionality is still very new, you will need 1.13.1 to fix some problems with updates, and, as with anything new, bugs are still being developed.

+15
source share

All Articles