docker - 在 Dockerbuild 文件中使用 docker-compose 环境变量

拥有以下 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

然后使用 ARGDockerfile 中引用它:

ARG MYSQL_ROOT_PASSWORD
ARG ENV
ADD ${ENV}/data.xml /data/

关于 *.env 文件中定义的环境变量,我认为它们不能在构建时传递给容器。

https://stackoverflow.com/questions/29261811/

相关文章:

python - 如何使用 pip 安装本地软件包作为 docker 构建的一部分?

docker - 如何将 Capistrano 与 Docker 集成进行部署?

docker - 多个 Docker 容器可以使用相同的主机/端口运行吗?

docker - boot2docker 存储的 docker 镜像在哪里?

docker - Jenkins + Docker : How to control docker

docker - 扩展本地 Dockerfile

docker - 如何为 Docker 中的容器分配域名?

docker - Docker 容器中的 asp.net 核心与 Azure App 服务

docker - 如何将 Docker 容器中的目录挂载到主机?

docker - 在 docker 中标记图像