gpt4 book ai didi

Docker ARG 变量不起作用(始终为空)

转载 作者:行者123 更新时间:2023-12-02 16:14:54 28 4
gpt4 key购买 nike

为什么我的 dockerfile 中的 ARG 变量总是空的?

命令

docker build --rm --force-rm --no-cache -f ./Dockerfile

Docker文件

ARG APP_NAME='ground-station'

FROM node:current AS build-node
WORKDIR /${APP_NAME}
RUN echo "APP_NAME=${APP_NAME}"

输出

Sending build context to Docker daemon  1.199MB
Step 1/4 : ARG APP_NAME='ground-station'
Step 2/4 : FROM node:current AS build-node
---> 6e72986b1b6e
Step 3/4 : WORKDIR /${APP_NAME}
---> Running in 39f12e36d4a1
Removing intermediate container 39f12e36d4a1
---> 93f5cdef6402
Step 4/4 : RUN echo "APP_NAME=${APP_NAME}"
---> Running in a18ac6f3bee8
APP_NAME=
Removing intermediate container a18ac6f3bee8
---> 746cea84bb8f
Successfully built 746cea84bb8f

在第 4 步,APP_NAME 始终为空。

我搜索了一个解决方案,但我只找到了 this .我尝试使用 --no-cache 但它仍然不起作用。


docker版本的输出

Client: Docker Engine - Community
Version: 20.10.5
API version: 1.41
Go version: go1.13.15
Git commit: 55c4c88
Built: Tue Mar 2 20:17:52 2021
OS/Arch: linux/amd64
Context: default
Experimental: true

Server: Docker Engine - Community
Engine:
Version: 20.10.5
API version: 1.41 (minimum version 1.12)
Go version: go1.13.15
Git commit: 363e9a8
Built: Tue Mar 2 20:15:47 2021
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.4.4
GitCommit: 05f951a3781f4f2c1911b05e61c160e9c30eaa8e
runc:
Version: 1.0.0-rc93
GitCommit: 12644e614e25b05da6fd08a38ffa0cfe1903fdec
docker-init:
Version: 0.19.0
GitCommit: de40ad0

最佳答案

ARG steps are scoped .在第一个 FROM 步骤之前,ARG 仅适用于 FROM 步骤。在每个 FROM 步骤中,它仅适用于 ARG 步骤之后的行,直到下一个 FROM(在多阶段构建中)。

要解决此问题,请重新排序您的步骤:

FROM node:current AS build-node
ARG APP_NAME='ground-station'
WORKDIR /${APP_NAME}
RUN echo "APP_NAME=${APP_NAME}"

关于Docker ARG 变量不起作用(始终为空),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66995622/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com