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?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage