liujie
liujie
Published on 2023-08-26 / 53 Visits
0
0

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

为什么我的 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 始终为空

最佳答案

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/


Comment