Dockerのビルド警告を減らす
以下は、Dockerfileのビルド時に表示される可能性のある警告を解消するためのいくつかのヒントです。
debconf: delaying package configuration, since apt-utils is not installed
このエラーは通常安全に無視でき、完全に排除するのは困難です。ただし、必要なパッケージをインストールする際にDockerfileに以下を追加することで、標準出力のメッセージを1つに減らすことができます。
RUN apt-get update \
&& export DEBIAN_FRONTEND=noninteractive \
&& apt-get -y install --no-install-recommends apt-utils dialog 2>&1
Warning: apt-key output should not be parsed (stdout is not a terminal)
この重要度の低い警告は apt-key の出力を解析(パース)しないように警告するものであり、スクリプトで解析を行っていなければ問題ありません。安全に無視できます。
これは apt-key コマンドがターミナルから実行されていないために Dockerfile 内で発生します。残念ながらこのエラーを完全に排除することはできませんが、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 ファイルとはソースツリーの異なる場所にある、開発用に構成を拡張するためのオーバーライドファイルにこの引数を追加できます。