减少Docker构建警告
以下是消除Dockerfile构建中可能显示的警告的一些提示。
debconf: 延迟软件包配置,因为未安装apt-utils
这个错误通常可以安全地忽略,但要完全消除它还是相当棘手。然而,通过在你的Dockerfile中添加以下内容,可以在安装所需包时将它减少到一个stdout消息:
运行 apt-get update \
&& export DEBIAN_FRONTEND=noninteractive \
&& apt-get -y install --no-install-recommends apt-utils dialog 2>&1
警告:apt-key输出不应被解析(标准输出不是终端)
这个非致命警告告诉您不要解析输出的apt-key, 只要你的脚本没有,就没有问题。你可以放心忽略它。
这发生在Dockerfiles中,因为apt-key命令没有从终端运行。不幸的是,这个错误无法完全消除,但可以在以下情况下隐藏。apt-key命令返回非零退出代码(表示失败)。
例如:
# (OUT=$(apt-key add - 2>&1) || echo $OUT) 只会打印输出,当返回非零退出代码时
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | (OUT=$(apt-key add - 2>&1) || echo $OUT)
您还可以设置APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE环境变量来抑制警告,但看起来有点吓人,所以如果你使用它,请在你的Dockerfile中添加注释:
# 抑制apt-key警告,因为标准输出不是终端。在本脚本中使用是安全的。
ENV APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=DontWarn
显示为红色的信息消息
某些 CLIs 将特定信息(如调试细节)输出到标准错误而不是标准输出。这些信息将显示在 Visual Studio Code 终端和输出日志中的红色。
如果消息无害,你可以通过附加标准错误到标准输出来代替管道命令的输出2>&1到命令的末尾。
例如:
运行 apt-get -y install --no-install-recommends apt-utils dialog 2>&1
如果命令失败,您仍然可以看到错误,但它们不会显示为红色。
避免使用Docker构建的镜像出现的问题
给定Dockerfiles和Docker Compose文件可以不使用VS Code或开发容器CLI,您可能希望告知用户,如果无法按预期工作,他们不应直接尝试构建镜像。为了解决这个问题,您可以添加一个需要指定的构建参数。
例如,您可以在您的Dockerfile中添加以下内容:
ARG vscode
RUN if [[ -z "$devcontainercli" ]] ; then printf "\n错误:此Dockerfile需要使用VS Code构建!" && exit 1; else printf "检测到VS Code: $devcontainercli"; fi
接下来的是你的devcontainer.json输入:
"构建": {
"Dockerfile": "Dockerfile",
"参数": {
// 设置 devcontainer-cli 参数用于 Dockerfile
"devcontainercli": "true"
},
}
在Docker Compose的情况下,你可以将这个参数添加到一个单独的覆盖文件中,以扩展你的配置,该配置位于源树中与主Docker Compose文件不同位置。