详解Docker Compose 中可用的环境变量问题

2020-06-17 06:52:41易采站长站整理

$ docker-compose config

version: '3'
services:
web:
image: 'webapp:v1.5'

shell 中的值优先于

 .env 
文件中指定的值。如果在 shell 中将 TAG 设置为不同的值,则镜像中将使用该值:


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

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

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

Compose 文件
Environment 文件
Dockerfile
变量未定义

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


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

$ cat docker-compose.yml
version: '3'
services:
api:
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'

只有在

 environment 
env_file 
没有 Docker Compose 条目时,
Dockerfile 
中的任何
 ARG 
ENV 
设置才会评估(evaluate)。

NodeJS 容器的细节

如果你有脚本的 package.json 条目像 NODE_ENV=test node server.js 一样启动,那么这将覆盖 docker-compose.yml 文件中的任何设置。

7. 使用环境变量配置 Compose

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

8. 通过 link 创建环境变量

在第一版 Compose 文件中使用 links 选项时,会为每个链接创建环境变量。它们记录在 Link环境变量参考 中。

但是,这些变量已被弃用。link 改为为主机创建别名。

原文地址

您可能感兴趣的文章:Docker Compose引用环境变量的方法示例docker中的环境变量使用与常见问题解决方案