我有一个 python 文件 server.py,它只读取 LOGS_PATH 环境变量并设置使用它来创建目标的日志目录。
logs_path = os.getenv("LOGS_PATH", "/logs/proxy.log")
fileHandler = logging.FileHandler(logs_path)
我的 docker 文件包含以下内容,请注意我创建了日志目录和 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。
