2017-08-17 3 views
2

Ich habe eine Python-Datei server.py, die einfach liest LOGS_PATH Umgebungsvariable und legt sie verwendet, um das Protokollverzeichnis des Ziels zu erstellen.Keine solche Datei oder Verzeichnis beim Ausführen von Docker

logs_path = os.getenv("LOGS_PATH", "/logs/proxy.log") 
fileHandler = logging.FileHandler(logs_path) 

Meine Docker Datei hat die folgende, bemerkt, dass ich das Protokollverzeichnis und die proxy.log Datei erstellen.

EXPOSE 8000 
CMD mkdir /logs 
CMD touch /logs/proxy.log 

CMD python server.py 

Dann baue ich das Docker-Bild und führen Sie es wie folgt.

docker build -t rank 
docker run --rm -it --net=host -p 8000:8000 --env-file=.env-co --name=rank rank 

Aber wenn ich es laufe, explodiert es. Es sagt IOError: [Errno 2] No such file or directory: '/logs/proxy.log'

Antwort

2

CMD und RUN sind verschiedene Dinge. Verwendung wie folgt aus:

EXPOSE 8000 
RUN mkdir /logs 
RUN touch /logs/proxy.log 

CMD python server.py 

CMD der Befehl ist, die den Behälter darstellt, wenn ausgeführt wird, kann ein Bild nur ein CMD (die letzte ist, die nur gültig). RUN wird ausgeführt, wenn Sie docker build tun.

Verwandte Themen