运行码头时没有这样的文件或目录
问题描述:
我有一个python文件server.py
,它简单地读取LOGS_PATH
环境变量,集合使用它来创建目标的日志目录。运行码头时没有这样的文件或目录
logs_path = os.getenv("LOGS_PATH", "/logs/proxy.log")
fileHandler = logging.FileHandler(logs_path)
我的搬运工文件有如下,请注意我创建日志的目录和文件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将被执行。