即使变量未定义,将路径附加到 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
但它也给出了同样的警告。
我终于在这里注册来支持你的问题,但由于声誉限制(以及评论),我没有这个能力,这就是为什么我会尝试提供一些有用的答案。
根据我对文档的挖掘,UndefinedVar是Build Check。
根据文档:
Buildx 版本 0.15.0 及更高版本支持构建检查
根据变更日志:
0.15.0 2024-06-11 此版本的完整发行说明可在 GitHub 上获取。
新的
选项允许设置构建的评估方法, 替换之前的实验性--call
标志。泊坞窗/buildx#2498, docker/buildx#2487, docker/buildx#2513除了默认的构建方法外,还有以下方法 由 Dockerfile 前端实现:
:为您的构建配置运行验证例程。有关构建检查的更多信息,请参阅构建检查--call=check
所以这是一个相对较新的添加,没有太多反馈。
当然,您可以使用
check=skip
跳过检查 将其关闭
但是我在 docs 和 here 中都找不到修复它的正确方法,并且 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:-''}"
没有帮助。