【发布时间】:2019-01-13 15:55:14
【问题描述】:
给定一个非常简单的docker-compose 文件:
version: '3'
services:
test:
image: busybox
env_file:
- my.env
command: env
以及其中引用的my.env 文件:
FOO=BAR
运行docker-compose up按预期打印(容器名称前缀默认为父目录的名称):
test_1 | PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
test_1 | HOSTNAME=00dc4fa7f38a
test_1 | FOO=BAR
test_1 | HOME=/root
tmp_test_1 exited with code 0
从外部覆盖env_file 中的变量,如FOO=SOMETHING_ELSE docker-compose up,但不会反映在容器中。输出仍将包含FOO=BAR 中定义的my.env。
是否有可能以某种方式从外部覆盖env_file 中定义的变量,而不在文件内更改它们?我知道如果我使用以下行扩展我的docker-compose.yml 文件,它将起作用
environment:
- FOO
但是,这并不能真正扩展到大量变量 - 必须始终确保 env_file 和 docker-compose.yml 同步以防止出现严重错误。
【问题讨论】:
标签: docker docker-compose environment-variables env-file