簡體   English   中英

v2 中的 docker-compose 覆蓋構建參數

[英]docker-compose in v2 overwrites build arguments

此代碼在 v2 之前有效。 這是我能想到的最小的例子。 我正在尋找一種通過 docker-compose build 命令修復它的方法。

我知道這個問題有很多文字,所以我試圖強調重要的部分。

任何想法如何解決這個問題或解決它? 如果沒有人知道為什么會發生這種情況,我將提交錯誤報告。

編輯以解釋為什么這不是 5 年前問過的How to pass arguments to entrypoint in docker-compose.yml的重復。 這不是語法錯誤或有關運行時環境變量的問題。 這個問題是關於構建時環境變量 docker-compose v2 的錯誤替換。

文件

FROM nginx:1.15.2

ARG A
ARG B

RUN env

docker-compose.yml

version: "3.6"
services:
  nginxtest:
        image: upgrade_test:0.1
        container_name: upgrade_test
        build:
            context: .
            dockerfile: ./Dockerfile
            args:
                A: arg_a
                B: arg_b

如果我直接使用 docker 運行 Dockerfile,ARGS 會按預期工作:

$ docker build --no-cache --build-arg A=arg_a --build-arg B=arg_b -t upgradetest .
Sending build context to Docker daemon  3.072kB
Step 1/4 : FROM nginx:1.15.2
 ---> c82521676580
Step 2/4 : ARG A
 ---> Running in a0f28fe1354f
Removing intermediate container a0f28fe1354f
 ---> accca99c82d7
Step 3/4 : ARG B
 ---> Running in 797051b92fda
Removing intermediate container 797051b92fda
 ---> 172094fed9d5
Step 4/4 : RUN env
 ---> Running in 4e6dfae151f6
HOSTNAME=4e6dfae151f6
HOME=/root
A=arg_a  <--------------------------------------------------------------------------------------- expected result
NGINX_VERSION=1.15.2-1~stretch
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
NJS_VERSION=1.15.2.0.2.2-1~stretch
B=arg_b <--------------------------------------------------------------------------------------- expected result
PWD=/
Removing intermediate container 4e6dfae151f6
 ---> cb1f2f43bd32
Successfully built cb1f2f43bd32
Successfully tagged upgradetest:latest

使用 docker-compose 命令,事情不太好:

$ docker-compose build --no-cache
Sending build context to Docker daemon     297B
Step 1/4 : FROM nginx:1.15.2
 ---> c82521676580
Step 2/4 : ARG A
 ---> Running in d0b419c42db3
 ---> 9e53cb90f9a4
Step 3/4 : ARG B
 ---> Running in f645fb8df1b4
 ---> 5d4bc5267c63
Step 4/4 : RUN env
 ---> Running in 7c0813b7a822
HOSTNAME=7c0813b7a822
HOME=/root
A=arg_b <-------------------------------------------------------------------------------------- expected arg_a
NGINX_VERSION=1.15.2-1~stretch
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
NJS_VERSION=1.15.2.0.2.2-1~stretch
B=arg_b <-------------------------------------------------------------------------------------- expected result
PWD=/
 ---> a3b37c031916
Successfully built a3b37c031916
Successfully tagged upgrade_test:0.1

對此有一個修復,它只影響 2.1.0 上的經典構建器,這就是為什么我很難重現它。 在合並之前,您可以嘗試返回一個版本,或者切換到 buildkit(不確定這些步驟是否像 v1 那樣適用於 v2),或者在 compose 之外構建。

暫無
暫無

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

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