簡體   English   中英

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

[英]How to use an environment variable from a docker-compose.yml in a Dockerfile?

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}' 

只是回顯: ${GITLAB_USER}

我如何才能完成這項工作,以便可以使用Docker內部.env文件中的變量(通過.env -compose)?

有兩個不同的時間范圍需要理解。 構建映像與運行容器是分開的。 第一部分使用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文件中設置的值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM