2017-02-03 5 views
1

Mein Dockerfile istDocker Protokolle anmeldet exec nicht gelöst

FROM node:4 

RUN npm install -g yarn 

WORKDIR /app 

ich docker run -d laufen und mein aktuelles Arbeitsverzeichnis als Volume. Alle Deps werden von yarn installiert. Ich habe ein npm-Skript, um die Dateien zu flinken.

Wenn ich docker exec -it [container] npm run lint tun, funktioniert es wie erwartet und ich kann alle Protokolle sehen. Aber wenn ich docker exec -itd [container] npm run lint mache, wird sofort beendet, was erwartet wird. Aber ich kann die Protokolle nicht sehen, indem ich docker logs [container] laufen lasse. Wie füge ich die exec wieder an oder sehe einfach zu den Protokollen?

Ich versuchte docker attach [container] es geht zum repl von nodejs. Warum das?

Antwort

2

Wie in "Docker look at the log of an exited container" erwähnt, können Sie docker logs

docker logs -t <container> 

verwenden, die stdout/stderr zeigen (mit Zeitstempel wegen der -t Option).

für die letzten 50 Zeilen dieser Protokolle:

docker logs -t <container id> | tail -n 50 

Hinweis: das nur, wenn npm Lauf Flusen von Ihrem Container ausgeführt werden funktionieren wurde (docker run <image> npm run lint)

Wenn Ihr docker exec existiert sofort, dann ja Es würde keine Stämme durch den Behälter selbst erzeugt werden.

+0

Ich habe den Befehl versucht, aber es scheint nicht zu funktionieren. Ich führe "docker run -d" und dann "docker exec -itd [container]" aus, also bezweifle ich, dass es im Trennmodus läuft. – stevemao

+0

@stevemao Überprüfen Sie zuerst, dass Ihr Container mit Docker ps beendet wurde. – VonC

+0

@stevemao Ich habe die Antwort bearbeitet: 'docker logs' würde anzeigen, was der Container macht, nicht was' docker exec' tut (seit 'docker exec' gestoppt hat, tut es nichts mehr) – VonC

Verwandte Themen