Wenn ich benutze, docker-compose up
kann ich Protokolle für alle Container in meiner docker-compose.yml
Datei sehen.
Wenn ich jedoch benutze, sehe docker-compose run app
ich nur die Konsolenausgabe für, app
aber keinen der Dienste, die app
davon abhängen. Wie kann die Protokollausgabe für die anderen Dienste angezeigt werden?
docker
docker-compose
sthomps
quelle
quelle
docker-compose logs -f service_name
docker-compose run
jeder Ausführung ein neuer Container erstellt wird.docker-compose run
in circleci nur meine Tests so seine Ordnung zu laufen , wenn es einen neuen Container erstellt. Das Hauptproblem besteht darin, dass keine Protokollausgabe von den abhängigen Diensten angezeigt wird.Antworten:
Update 1. Juli 2019
Aus der Dokumentation :
Siehe Docker-Protokolle
Sie können Docker Compose im getrennten Modus starten und sich später an die Protokolle aller Container anhängen . Wenn Sie mit dem Ansehen von Protokollen fertig sind, können Sie sich von der Protokollausgabe trennen, ohne Ihre Dienste herunterzufahren.
docker-compose up -d
diese Option , um alle Dienste im getrennten Modus zu starten (-d
) ( im getrennten Modus werden keine Protokolle angezeigt).docker-compose logs -f -t
-f
-t
Ctrl + z
oderCtrl + c
, um sich von der Protokollausgabe zu trennen, ohne Ihre laufenden Container herunterzufahrenWenn Sie an Protokollen eines einzelnen Containers interessiert sind, können Sie
docker
stattdessen das Schlüsselwort verwenden:docker logs -t -f <name-of-service>
Speichern Sie die Ausgabe
Um die Ausgabe in einer Datei zu speichern, fügen Sie Ihrem Protokollbefehl Folgendes hinzu:
docker-compose logs -f -t >> myDockerCompose.log
quelle
docker-compose run
jene Dienste, die eindeutige Namen von den indocker.compose.yml
Wenn Sie Ausgabeprotokolle aller Dienste in Ihrem Terminal anzeigen möchten .
Wenn Sie die Ausgabe bestimmter Dienste protokollieren möchten, können Sie dies wie folgt tun:
Ref: https://docs.docker.com/v17.09/engine/admin/logging/view_container_logs/
quelle
docker-compose up -d
docker ps
docker logs <containerid>
quelle
Leider müssen wir
docker-compose logs
getrennt von laufendocker-compose run
. Damit dies zuverlässig funktioniert, müssen wir dendocker-compose run
Exit-Status unterdrücken, dann das Protokoll umleiten und mit dem richtigen Status beenden.quelle