Docker ARG变量不工作(始终为空)
为什么dockerfile中的ARG变量总是空的 命令Docker ARG变量不工作(始终为空),docker,dockerfile,Docker,Dockerfile,为什么dockerfile中的ARG变量总是空的 命令 docker build--rm--force rm--no cache-f./Dockerfile Dockerfile ARG应用程序_NAME='地面站' 来自节点:当前作为生成节点 WORKDIR/${APP_NAME} 运行echo“APP_NAME=${APP_NAME}” 输出 在步骤4中,APP_NAME始终为空 我在寻找解决办法,但我所找到的只是。我尝试了——没有缓存,但仍然不起作用 docker版本的输出 。在第一
docker build--rm--force rm--no cache-f./Dockerfile
Dockerfile
ARG应用程序_NAME='地面站'
来自节点:当前作为生成节点
WORKDIR/${APP_NAME}
运行echo“APP_NAME=${APP_NAME}”
输出
在步骤4中,APP_NAME
始终为空
我在寻找解决办法,但我所找到的只是。我尝试了——没有缓存,但仍然不起作用
docker版本的输出
。在第一个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}"
是否有一种方法可以从
为所有设置变量?我的完整Dockerfile中有多个目标(或FROM),我的目标是为所有目标全局设置变量。您可以在每个阶段添加相同的ARG
步骤。理想情况下,在您需要使用arg之前,可以在其他步骤上执行缓存。更改ARG的值时,下一个运行步骤(不管是否有$ARG
条目,因为ARG是作为环境变量传递的,可能会以docker无法预测的方式影响该步骤),或使用该ARG的$var
的任何其他步骤,都将导致缓存未命中。@elig。链接文档中描述了为多阶段生成设置相同的参数。
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
FROM node:current AS build-node
ARG APP_NAME='ground-station'
WORKDIR /${APP_NAME}
RUN echo "APP_NAME=${APP_NAME}"