为什么我的 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/