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: Si cambio el archivo .env , ¿cómo podría volver a cargar el contenedor para usar las nuevas variables de entorno con un tiempo de inactividad mínimo?
Si está ejecutando yml con docker-compose, puede simplemente ejecutar docker-compose up -d y volverá a crear cualquier contenedor que tenga cambios y dejará intactos todos los servicios sin cambios.
$ 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 Si ejecuta los contenedores como una docker stack deploy -c docker-compose.yml con un formato de archivo de la versión 3, puede realizar una actualización continua del servicio que evitará cualquier tiempo de inactividad si tiene varias instancias de su servicio en ejecución. Esta funcionalidad aún es muy nueva, querrá que 1.13.1 solucione algunos de los problemas con las actualizaciones y, como con todo esto nuevo, los errores aún se están resolviendo.