如何在Dockerfile中使用docker-compose.yml中的环境变量?

时间:2018-01-30 14:05:11

标签: docker docker-compose dockerfile

我的modifying_user看起来像这样:

docker-compose.yml

我想在version: '2' services: myapp: build: context: . environment: - GITLAB_USER=myusername 中使用该环境变量,但它不起作用:

Dockerfile

回声:FROM node:7 ENV GITLAB_USER=${GITLAB_USER} \ RUN echo '${GITLAB_USER}'

我如何才能完成这项工作,以便我可以使用Docker中${GITLAB_USER}文件中的变量(通过docker-compose)?

1 个答案:

答案 0 :(得分:3)

有两个不同的时间框架需要了解。构建映像与运行容器是分开的。第一部分使用Dockerfile创建图像。第二部分采用生成的图像和所有设置(例如环境变量)来创建容器。

在Dockerfile中,RUN行在构建时发生。如果要将参数传递给构建,可以使用构建arg。你的Dockerfile看起来像:

FROM node:7
ARG GITLAB_USER=default_user_name
# ENV is optional, without it the variable only exists at build time
# ENV GITLAB_USER=${GITLAB_USER}
RUN echo '${GITLAB_USER}' 

你的docker-compose.yml文件看起来像:

version: '2'
services:
  myapp:
    build:
      context: .
      args:
      - GITLAB_USER=${GITLAB_USER}

yml文件中的${GITLAB_USER}值将替换为.env文件中设置的值。