我有一个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'

最佳答案

CMDRUN是不同的东西。用作:

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/

10-11 09:12