Redirecting Befehlsausgabe im Docker
Ich möchte eine einfache Protokollierung für meinen Server durchführen, bei dem es sich um eine kleine Flask-App handelt, die in einem Docker-Container ausgeführt wird.
Hier ist die Dockerfile
# Dockerfile
FROM dreen/flask
MAINTAINER dreen
WORKDIR /srv
# Get source
RUN mkdir -p /srv
COPY perfektimprezy.tar.gz /srv/perfektimprezy.tar.gz
RUN tar x -f perfektimprezy.tar.gz
RUN rm perfektimprezy.tar.gz
# Run server
EXPOSE 80
CMD ["python", "index.py", "1>server.log", "2>server.log"]
Wie Sie in der letzten Zeile sehen können, leite ich stderr und stdout in eine Datei um. Jetzt starte ich diesen Container und schale hinein
docker run -d -p 80:80 perfektimprezy
docker exec -it "... id of container ..." bash
Und beobachte die folgenden Dinge:
Der Server läuft und die Website funktioniert
Es gibt kein/srv/server.log
ps aux | grep python
ergibt:
root 1 1.6 3.2 54172 16240 ? Ss 13:43 0:00 python index.py 1>server.log 2>server.log
root 12 1.9 3.3 130388 16740 ? Sl 13:43 0:00 /usr/bin/python index.py 1>server.log 2>server.log
root 32 0.0 0.0 8860 388 ? R+ 13:43 0:00 grep --color=auto python
Aber es gibt keine Protokolle ... JEDOCH, wenn ichdocker attach
In den Container kann ich die App sehen, die die Ausgabe in der Konsole generiert.
Wie leite ich stdout / err bei Verwendung von Docker richtig in eine Datei um?