将路径附加到 Dockerfile 中类似 PATH 的变量的正确方法

问题描述 投票:0回答:1

即使变量未定义,将路径附加到 Dockerfile 中的变量而不触发任何警告的正确方法是什么?

假设我想将路径附加到类似 PATH 的环境变量,该路径可能在基础映像中未定义(假设基于 Linux 的映像):

ARG BASE_IMAGE=ubuntu:22.04
FROM $BASE_IMAGE
ENV PATH1=$PATH1:/new-path1

运行

docker build
时,如果在基础映像中定义了
PATH1
,它会正确地将新路径附加到
PATH1
。但是,如果基础图像中未定义
PATH1
,则会给出以下警告:

#1 WARN: UndefinedVar: Usage of undefined variable '$PATH1' (did you mean $PATH?) (line 3)

我尝试使用环境替换来避免此警告,如下所示:

ENV PATH1=${PATH1:-}:/new-path1

但它也给出了同样的警告。

docker dockerfile environment-variables warnings suppress-warnings
1个回答
0
投票

我终于在这里注册来支持你的问题,但由于声誉限制(以及评论),我没有这个能力,这就是为什么我会尝试提供一些有用的答案。

根据我对文档的挖掘,UndefinedVarBuild Check

根据文档:

Buildx 版本 0.15.0 及更高版本支持构建检查

根据变更日志

0.15.0 2024-06-11 此版本的完整发行说明可在 GitHub 上获取。

新的

--call
选项允许设置构建的评估方法, 替换之前的实验性
--print
标志。泊坞窗/buildx#2498, docker/buildx#2487, docker/buildx#2513

除了默认的构建方法外,还有以下方法 由 Dockerfile 前端实现:

--call=check
:为您的构建配置运行验证例程。有关构建检查的更多信息,请参阅构建检查

所以这是一个相对较新的添加,没有太多反馈。

当然,您可以使用

check=skip
跳过检查

将其关闭

但是我在 docshere 中都找不到修复它的正确方法,并且 lated (旧)问题没有这些问题。我创建了自己的问题

在我们的例子中,我们使用

PYTHONPATH
变量:

PYTHONPATH="$SOFT/Stranger-${STRANGER_VERSION}/local/lib/python3.10/dist-packages:$PYTHONPATH"

我们收到了同样的警告:

UndefinedVar: Usage of undefined variable '$PYTHONPATH' (line 72)

我已经尝试过了

PYTHONPATH="$SOFT/Stranger-${STRANGER_VERSION}/local/lib/python3.10/dist-packages:${PYTHONPATH:-''}"

没有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.