我有一个pythont文件server.py
,它仅读取LOGS_PATH
环境变量并进行设置以使用它创建目标的日志目录。
logs_path = os.getenv("LOGS_PATH", "/logs/proxy.log")
fileHandler = logging.FileHandler(logs_path)
我的docker文件具有以下内容,请注意,我创建了logs目录和
proxy.log
文件。EXPOSE 8000
CMD mkdir /logs
CMD touch /logs/proxy.log
CMD python server.py
然后,我构建docker镜像并运行它,如下所示。
docker build -t rank
docker run --rm -it --net=host -p 8000:8000 --env-file=.env-co --name=rank rank
但是当我运行它时,它会炸毁。它说
IOError: [Errno 2] No such file or directory: '/logs/proxy.log'
最佳答案
CMD
和RUN
是不同的东西。用作:
EXPOSE 8000
RUN mkdir /logs
RUN touch /logs/proxy.log
CMD python server.py
CMD是表示容器在运行时的命令,一个镜像只能有一个CMD(最后一个是唯一有效的)。当您执行
docker build
时,RUN将被执行。关于python - 运行docker时没有这样的文件或目录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45725181/