docker compose中设置环境变量

Docker

            • Compose中的环境变量
            • 在Compose文件中替换环境变量
            • 在容器中设置环境变量
            • “ env_file”配置选项
            • 使用“ docker-compose run”设置环境变量
            • “ .env”文件
            • 使用环境变量配置compose

Compose中的环境变量

Compose有多个部分以一种或另一种方式处理环境变量。

在Compose文件中替换环境变量

您可以在shell中使用环境变量来填充Compose file中的值:

web:
  image: "webapp:${TAG}"
在容器中设置环境变量

您可以使用“ environment”键在服务容器中设置环境变量,就像docker run -e VARIABLE = VALUE …一样:

web:
  envrionment:
	- DEBUG=1

容器中DEBUG变量的值取自运行Compose shell程序中同一变量的值。

“ env_file”配置选项

您可以使用“ env_file”选项将多个环境变量从外部文件传递到服务的容器,就像docker run --env-file = FILE …一样:

web:
  env_file:
	- web-variable.env
使用“ docker-compose run”设置环境变量

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

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

您也可以通过不给变量赋值来从shell传递变量:

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

容器中DEBUG变量的值取自运行Compose shell程序中同一变量的值。

“ .env”文件

您可以在名为.env的环境文件中为在Compose file中引用或用于配置Compose的任何环境变量设置默认值:

$ cat .env
TAG=v1.5

$ cat docker-compose.yml
version: '3'
services:
  web:
    image: "myapp:${TAG}"

Shell中的值优先于.env文件中指定的值。 如果在shell程序中将TAG设置为其他值,则image中的替换将使用该值:

$ export TAG=v2.0
$ docker-compose config

version: '3'
services:
  web:
    image: 'myapp:v2.0'

当您在多个文件中设置相同的环境变量时,以下是Compose用于选择要使用的值的优先级:

1.Compose file #docker-compose.yml
2. Shell environment variables # export TAG=v2.0
3. Environment file #.env
4. Dockerfile
5. Variable is not defined #变量未定义

在下面的示例中,我们在Environment文件和Compose文件上设置了相同的环境变量:

$ cat ./Docker/api/api.env
NODE_ENV=test

$ cat docker-compose.yml
version: '3'
services:
  web:
    image: ‘node:6-alpine’
    env_file:
      - ./Docker/api/api.env
    environment:
      - NODE_ENV=production
    

运行容器时,在Compose文件中定义的环境变量优先。

$ docker-compose exec api node
>process.env.NODE_ENV
'production'

仅在没有Docker Compose 输入 environment或env_file时,才对Dockerfile中的任何ARG或ENV设置进行评估。

NodeJS容器的细节
如果您有一个script:start之类的package.json条目,例如NODE_ENV = test node server.js,那么这将覆盖您docker-compose.yml文件中的所有设置。

使用环境变量配置compose

可以使用几个环境变量来配置Docker Compose命令行行为。 它们以COMPOSE_或DOCKER_开头,并记录在CLI环境变量中。

你可能感兴趣的:(Docker,docker,docker-compose,enviroment,variable)