How to reload environment variables in docker-compose container with minimum downtime?

后端 未结 1 495
情话喂你
情话喂你 2021-01-30 16:10

docker-compose.yml

version: \'2\'
services:
  app:
    build:
      context: .
    command: python src/app.py
    restart: on-failure
    depend         


        
1条回答
  •  别那么骄傲
    2021-01-30 16:39

    If you are running the yml with docker-compose, you can just run docker-compose up -d and it will recreate any containers that have changes and leave all unchanged services 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 the containers as a docker stack deploy -c docker-compose.yml with a version 3 file format, you can do a rolling update of the service which will prevent any downtime if you have multiple instances of your service running. This functionality is still very new, you'll want 1.13.1 to fix some of the issues with updates, and as with anything this new, bugs are still being worked out.

    0 讨论(0)
提交回复
热议问题