将环境变量从主机传递到Docker

时间:2019-09-16 19:46:03

标签: docker nginx

我知道这是很多人提出的问题。但是我不知道我在做什么错。我有这个Dockerfile

FROM nginx
ENV USER=${USER}
COPY proof.sh .
RUN chmod 777 proof.sh
CMD echo ${USER} >> /usr/share/nginx/html/index.html
CMD ["nginx", "-g", "daemon off;"]  
EXPOSE 80

在Linux中执行env命令时,得到USER = fran,然后运行以下命令: sudo docker run --entrypoint "/bin/sh" 5496674f99e5 ./prueba.sh以及其他docker run --env USER -d -p 89:80 prueba我也运行。如果我了解得很好,那么从主机执行此命令的最后一个命令应该将其传递给docker,但是我什么也没得到。为什么?。你可以帮帮我吗?。预先感谢

1 个答案:

答案 0 :(得分:1)

应该像

FROM nginx
ARG USER=default
ENV USER=${USER}
RUN echo ${USER} 
CMD ["nginx", "-g", "daemon off;"]  
EXPOSE 80

现在,如果您使用build-args之类的东西

docker build --no-cache --build-arg USER=fran_new -t my_image .

您将在类似fran_new

的日志中看到

或者如果您想在运行时从主机操作系统中获取用户,然后在运行时将其作为环境变量传递给

docker run --name my_container -e USER=$USER my_image

因此容器用户将与主机中的用户相同。