簡體   English   中英

docker-compose build args沒有傳遞給Dockerfile

[英]docker-compose build args not passing to Dockerfile

泊塢窗,compose.yml:

version: "3"

services:
  ei:
    build:
      context: .
      dockerfile: Dockerfile
      args:
        NODE_VERSION: 8
        HELLO: 5

Dockerfile:

ARG NODE_VERSION
ARG HELLO

FROM node:$NODE_VERSION

RUN echo "-> $HELLO"
RUN echo "-> $NODE_VERSION"

結果是:

km@Karls-MBP ~/dev/ve (km/ref) $ docker-compose -f docker-compose.yml build --no-cache
vertica uses an image, skipping
Building ei
Step 1/14 : ARG NODE_VERSION
Step 2/14 : ARG HELLO
Step 3/14 : FROM node:$NODE_VERSION
 ---> e63de54eee16
Step 4/14 : RUN echo "-> $HELLO"
 ---> Running in e93d89e15913
-> 
Removing intermediate container e93d89e15913
 ---> c305b277291c
Step 5/14 : RUN echo "-> $NODE_VERSION"
 ---> Running in 39e8e656c0bd
-> 8

我正在摸不着為什么這不起作用。 如果我更改節點版本號,則數字會更改。

compose文件中定義的參數在Dockerfile上可用,但僅在FROM之前和之后。 FROM ,參數不可用:

FROM之前聲明的ARG在構建階段之外,因此在FROM之后的任何指令中都不能使用它。 - 來自docker docs

為什么NODE_VERSION這個參數有效?
FROM之后,參數NODE_VERSION不起作用。 該參數僅用於FROMFROM node:8 )。 FROM之后,存在具有相同名稱的圖像環境變量 因此,您回顯圖像的環境變量而不是撰寫文件的參數。

但是你可以在FROM之后使用參數的默認值:

要使用在第一個FROM之前聲明的ARG的默認值,請使用沒有構建階段內的值的ARG指令。 - 來自docker docs

ARG NODE_VERSION

FROM node:$NODE_VERSION

ARG HELLO

RUN echo "-> $HELLO"
RUN echo "-> $NODE_VERSION"

要使用和顯示參數中定義的節點版本,您需要重命名此參數。 因此,您可以使用以下內容顯示所有參數和圖像的環境變量:

Dockerfile:

ARG CUSTOM_NODE_VERSION

FROM node:$CUSTOM_NODE_VERSION

ARG CUSTOM_NODE_VERSION
ARG HELLO

RUN echo "-> $HELLO"               #output: 5
RUN echo "-> $NODE_VERSION"        #output: 8.9.4
RUN echo "-> $CUSTOM_NODE_VERSION" #output: 8

泊塢窗,compose.yml:

version: "3"

services:
  ei:
    build:
      context: .
      dockerfile: Dockerfile
      args:
        CUSTOM_NODE_VERSION: 8
        HELLO: 5

如果你來到這里,你的語法和一切都很好,但變量仍然沒有通過...

可能是您嘗試覆蓋已由父圖像設置的變量(在我的情況下,嘗試設置BUNDLE_PATH ruby父圖像設置的BUNDLE_PATH )。

如果是這種情況,您可以簡單地將參數重命名為不與父項沖突的內容(即,而不是BUNDLE_PATH ,使用ARG_BUNDLE_PATH )!

ARG ARG_BUNDLE_PATH
ENV BUNDLE_PATH=$ARG_BUNDLE_PATH

有關更多詳細信息,請參閱此問題: https//github.com/moby/moby/issues/34494

暫無
暫無

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

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