拥有以下 docker-compose 文件:
db:
build: .
environment:
- MYSQL_ROOT_PASSWORD=password
- ENV=test
env_file: .env
有什么方法可以使用 docker-compose.yml 中声明的环境变量(作为环境或在 env_file 中声明)作为 Dockerfile 的一部分,而不在 Dockerfile 中声明它们?像这样的:
FROM java:7
ADD ${ENV}/data.xml /data/
CMD ["run.sh"]
最佳答案
虽然这个问题是很久以前提出的,但这里有一个类似问题的答案:Pass environment variables from docker-compose to container at build stage
基本上,要在容器构建时使用变量,必须在 docker-compose.yml
中定义变量:
build:
context: .
args:
MYSQL_ROOT_PASSWORD: password
ENV: test
然后使用 ARG
在 Dockerfile
中引用它:
ARG MYSQL_ROOT_PASSWORD
ARG ENV
ADD ${ENV}/data.xml /data/
关于 *.env
文件中定义的环境变量,我认为它们不能在构建时传递给容器。
https://stackoverflow.com/questions/29261811/