为什么我的 dockerfile 中的 ARG 变量始终为空?
docker build --rm --force-rm --no-cache -f ./Dockerfile
Run Code Online (Sandbox Code Playgroud)
ARG APP_NAME='ground-station'
FROM node:current AS build-node
WORKDIR /${APP_NAME}
RUN echo "APP_NAME=${APP_NAME}"
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
在第 4 步中,APP_NAME始终为空。
我寻找解决方案,但我发现的只是这个。我尝试过,--no-cache但仍然不起作用。
docker versionClient: 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
Run Code Online (Sandbox Code Playgroud)
BMi*_*tch 12
ARG步骤是有范围的。在第一步之前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}"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2953 次 |
| 最近记录: |