Docker Compose v2构建时build arguments参数值错误覆盖问题求助
这段代码在Docker Compose v2版本之前可正常运行,以下是整理的最小复现示例,希望能通过docker-compose build命令修复该问题。
我知道本问题内容较长,已对核心信息做了标注。
请问是否有可行的修复方案或绕过方法?若无人知晓该问题的成因,我将提交bug报告。
补充说明:本问题并非5年前发布的《How to pass arguments to entrypoint in docker-compose.yml》的重复问题,该问题讨论的是语法错误或运行时环境变量相关内容,本问题针对的是Docker Compose v2中构建时环境变量错误替换的异常。
Dockerfile
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命令构建结果(符合预期)
若直接使用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 <--------------------------------------------------------------------------------------- 预期结果 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 <--------------------------------------------------------------------------------------- 预期结果 PWD=/ Removing intermediate container 4e6dfae151f6 ---> cb1f2f43bd32 Successfully built cb1f2f43bd32 Successfully tagged upgradetest:latest
Docker Compose构建结果(不符合预期)
但使用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 <-------------------------------------------------------------------------------------- 预期为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 <-------------------------------------------------------------------------------------- 符合预期 PWD=/ ---> a3b37c031916 Successfully built a3b37c031916 Successfully tagged upgrade_test:0.1
内容的提问来源于stack exchange,提问作者Dov Rine
相关产品推荐
相关产品推荐

