减少Docker构建警告
以下是一些消除可能在您的Dockerfile构建中出现的警告的提示。
debconf: 由于未安装 apt-utils,延迟软件包配置
这个错误通常可以安全地忽略,并且很难完全消除。但是,您可以通过在Dockerfile中添加以下内容,在安装所需包时将其减少为stdout中的一条消息:
RUN apt-get update \
&& export DEBIAN_FRONTEND=noninteractive \
&& apt-get -y install --no-install-recommends apt-utils dialog 2>&1
警告:不应解析apt-key输出(stdout不是终端)
这个非关键警告告诉你不要解析apt-key
的输出,因此只要你的脚本不这样做,就没有问题。你可以安全地忽略它。
这种情况发生在Dockerfiles中,因为apt-key
命令不是从终端运行的。不幸的是,这个错误无法完全消除,但可以隐藏,除非apt-key
命令返回非零退出代码(表示失败)。
例如:
# (OUT=$(apt-key add - 2>&1) || echo $OUT) will only print the output with non-zero exit code is hit
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中添加注释:
# Suppress an apt-key warning about standard out not being a terminal. Use in this script is safe.
ENV APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=DontWarn
信息消息以红色显示
一些CLI会将某些信息(如调试详情)输出到标准错误而不是标准输出。这些信息将在Visual Studio Code的终端和输出日志中以红色显示。
如果消息是无害的,你可以通过将命令的标准错误输出重定向到标准输出,方法是在命令末尾添加2>&1
。
例如:
RUN apt-get -y install --no-install-recommends apt-utils dialog 2>&1
如果命令失败,您仍然可以看到错误,但它们不会显示为红色。
避免使用Docker构建镜像时出现的问题
给定的Dockerfiles和Docker Compose文件可以在没有VS Code或devcontainer
CLI的情况下使用,您可能希望让用户知道,如果直接构建镜像不会按预期工作,他们不应该尝试这样做。为了解决这个问题,您可以添加一个需要指定的构建参数,以便使事情正常工作。
例如,您可以将以下内容添加到您的 Dockerfile 中:
ARG vscode
RUN if [[ -z "$devcontainercli" ]] ; then printf "\nERROR: This Dockerfile needs to be built with VS Code !" && exit 1; else printf "VS Code is detected: $devcontainercli"; fi
并在你的 devcontainer.json
中添加以下内容:
"build": {
"dockerfile": "Dockerfile",
"args": {
// set devcontainer-cli arg for Dockerfile
"devcontainercli": "true"
},
}
在Docker Compose的情况下,你可以将这个参数添加到一个单独的覆盖文件中以扩展你的配置,该文件位于源代码树中与主Docker Compose文件不同的位置。