关于Docker Compose的环境变量

在compose文件中引用环境变量

可以在compose文件中引用运行docker-compose所在的shell中的环境变量,如:

  1. web:
  2.   image: "webapp:${TAG}"

在容器中设置环境变量

可以在compose文件中的environment关键词下设置容器的环境变量,就像docker run -e VARIABLE=VALUE …:

  1. web:
  2.   environment:
  3.     - DEBUG=1

将环境变量传递到容器

可以在compose文件中的environment关键词下定义一个环境变量而不赋值,就像docker run -e VARIABLE …:

  1. web:
  2.   environment:
  3.     - DEBUG

容器中环境变量DEBUG的值是从执行compose文件所在的shell的同一个环境变量取得。

env_file配置选项

可以使用compose文件中的env_file选项从一个外部的文件传递多个环境变量到容器中,就像docker run –env-file=FILE …:

  1. web:
  2.   env_file:
  3.     - web-variables.env

使用docker-compose run设置环境变量

就像docker run -e,可以使用docker-compose run -e为一次性容器设置环境变量:

  1. docker-compose run -e DEBUG=1 web python console.py

也可以不赋值从shell变量中取值:

  1. docker-compose run -e DEBUG web python console.py

DEBUG的值是从执行compose文件所在的shell的同一个环境变量取得。

.env文件

可以在环境文件.env设置默认的环境变量,这些环境变量可以在compose文件引用:

  1. $ cat .env
  2. TAG=v1.5
  3.  
  4. $ cat docker-compose.yml
  5. version: '2.0'
  6. services:
  7.   web:
  8.     image: "webapp:${TAG}"

当执行docker-compose up命令,上面定义的web服务将使用webapp:v1.5镜像。可以使用config命令来打印出来:

  1. $ docker-compose config
  2. version: '2.0'
  3. services:
  4.   web:
  5.     image: 'webapp:v1.5'

在shell中的环境变量将比定义在.env文件中的环境变量优先。如果在shell中设置了一个不同的TAG,镜像将使用shell中定义的而不是.env文件中的:

  1. $ export TAG=v2.0
  2. $ docker-compose config
  3. version: '2.0'
  4. services:
  5.   web:
  6.     image: 'webapp:v2.0'
标签:Docker 发布于:2019-11-19 02:43:57