參加你附近的 ,瞭解 VS Code 中的 AI 輔助開發。

減少 Docker 構建警告

以下是一些消除 Dockerfile 構建中可能出現的警告的技巧。

debconf: 延遲軟體包配置,因為 apt-utils 未安裝

這個錯誤通常可以安全地忽略,並且很難完全消除。但是,您可以透過將以下內容新增到 Dockerfile 中,將其減少到在安裝所需軟體包時在標準輸出中顯示一條訊息:

RUN apt-get update \
    && export DEBIAN_FRONTEND=noninteractive \
    && apt-get -y install --no-install-recommends apt-utils dialog 2>&1

警告:apt-key 輸出不應被解析(標準輸出不是終端)

這個非關鍵警告告訴您不要解析 apt-key 的輸出,因此只要您的指令碼不解析,就沒有問題。您可以安全地忽略它。

這在 Dockerfile 中發生,因為 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 構建映象出現問題

鑑於 Dockerfile 和 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 檔案不同的位置。