本站点文档内容均翻译自code.visualstudio.com,仅供个人学习,如有差异请以官网为准。

减少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文件不同位置。