Docker ビルドの警告を減らす
以下は、Dockerfile ビルドで表示される可能性のある警告を解消するためのヒントです。
debconf: delaying package configuration, since apt-utils is not installed
このエラーは通常、安全に無視でき、完全に取り除くのが難しい場合があります。ただし、必要なパッケージをインストールする際に、次の内容を Dockerfile に追加することで、stdout のメッセージを 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
の出力を解析しないように指示しています。したがって、スクリプトが解析しない限り、問題はありません。安全に無視できます。
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 ファイルとはソースツリー内の別の場所にある 構成を拡張するためのオーバーライドファイルに追加できます。