我的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)?
答案 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
文件中设置的值。