为什么
我有一个。env文件,我试图在Docker撰写文件中使用,以传递到要在Dockerfile中定义的入口点脚本中使用的容器。
我有以下有效的Dockerfile(分布在两个文件上,一个覆盖)。.env.dev
文件与docker撰写文件在同一目录下。环境变量值没有传递给容器。当我添加"=${RUN_MIGRATIONS_ON_START}"时,变量值为空白。如果我不设置它,那么变量甚至没有在容器中设置。
Docker compose files:
主docker组合文件:
version: '3.4'
services:
web:
build
context: .
覆盖docker撰写文件:
version: '3.4'
services:
web:
environment:
- RUN_MIGRATIONS_ON_START=${RUN_MIGRATIONS_ON_START}
- WS_SCHEME=${WS_SCHEME}
env_file:
- .env.dev
解决方案
docker-compose.override.yml
version: '3.4'
services:
web:
env_file:
- .env.dev
.env.dev
RUN_MIGRATIONS_ON_START=FOO
WS_SCHEME=BAR
为什么
environment:
- X=${Y} # Y is a variable from the local shell environment, not from .env
在文档
中详细描述您的配置选项可以包含环境变量。组成使用shell环境中的变量值