ist jetzt verfügbar! Lesen Sie über die neuen Funktionen und Fehlerbehebungen vom November.

Docker-Build-Warnungen reduzieren

Die folgenden Tipps helfen Ihnen, Warnungen zu beseitigen, die möglicherweise bei Ihren Dockerfile-Builds angezeigt werden.

debconf: Paketkonfiguration verzögert, da apt-utils nicht installiert ist

Diese Fehlermeldung kann in der Regel gefahrlos ignoriert werden und ist schwer vollständig zu beseitigen. Sie können sie jedoch auf eine Nachricht in stdout reduzieren, wenn das benötigte Paket installiert wird, indem Sie Folgendes zu Ihrem Dockerfile hinzufügen:

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

Warnung: apt-key-Ausgabe sollte nicht analysiert werden (stdout ist kein Terminal)

Diese nicht kritische Warnung weist darauf hin, dass die Ausgabe von apt-key nicht analysiert werden soll. Solange Ihr Skript dies nicht tut, ist dies kein Problem. Sie können sie gefahrlos ignorieren.

Dies tritt in Dockerfiles auf, da der Befehl apt-key nicht von einem Terminal aus ausgeführt wird. Leider kann dieser Fehler nicht vollständig beseitigt werden, aber er kann verborgen werden, es sei denn, der Befehl apt-key gibt einen Exit-Code ungleich Null zurück (was auf einen Fehler hinweist).

Zum Beispiel

# (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)

Sie können auch die Umgebungsvariable APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE setzen, um die Warnung zu unterdrücken, aber sie sieht etwas beängstigend aus, stellen Sie also sicher, dass Sie Kommentare in Ihrem Dockerfile hinzufügen, wenn Sie sie verwenden.

# 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

Informationsmeldungen in Rot

Einige CLIs geben bestimmte Informationen (z. B. Debug-Details) an den Standardfehler anstelle des Standardausgabestreams aus. Diese werden in der Befehlszeile und in den Ausgabeprotokollen von Visual Studio Code rot angezeigt.

Wenn die Meldungen harmlos sind, können Sie die Ausgabe des Befehls vom Standardfehler an den Standardausgabestream weiterleiten, indem Sie 2>&1 am Ende des Befehls anhängen.

Zum Beispiel

RUN apt-get -y install --no-install-recommends apt-utils dialog 2>&1

Wenn der Befehl fehlschlägt, können Sie die Fehler weiterhin sehen, aber sie werden nicht rot angezeigt.

Probleme mit mit Docker erstellten Images vermeiden

Da Dockerfiles und Docker Compose-Dateien auch ohne VS Code oder die devcontainer CLI verwendet werden können, möchten Sie den Benutzern möglicherweise mitteilen, dass sie das Image nicht direkt erstellen sollten, wenn dies nicht wie erwartet funktioniert. Um dieses Problem zu lösen, können Sie ein Build-Argument hinzufügen, das für das Funktionieren angegeben werden muss.

Zum Beispiel könnten Sie Folgendes zu Ihrem Dockerfile hinzufügen:

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

Und Folgendes in Ihrer devcontainer.json:

"build": {
      "dockerfile": "Dockerfile",
      "args": {
          // set devcontainer-cli arg for Dockerfile
          "devcontainercli": "true"
      },
    }

Im Fall von Docker Compose können Sie dieses Argument zu einer separaten Überschreibungsdatei hinzufügen, um Ihre Konfiguration zu erweitern, die sich an einer anderen Stelle in Ihrem Quellcodebaum befindet als die primäre Docker Compose-Datei.

© . This site is unofficial and not affiliated with Microsoft.