You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker中Python文件路径配置及日志写入Ubuntu /var/log的问题

解决Docker路径与日志挂载的两个核心问题

作为Docker新手碰到这类路径和挂载的问题太正常了,我帮你把两个问题拆解清楚,一步步搞定:

一、搞定publisher.py找不到的路径问题

你的问题根源出在构建上下文(Build Context)和COPY指令的匹配错位上,我给你理明白:

  1. 你运行docker build的路径是~/msw/queuemgr/mongo_db_cache/docker_inputs,这意味着Docker的构建上下文就是这个docker_inputs目录——也就是说,COPY . /xxx里的.指的是docker_inputs下的所有文件,而不是你以为的上级目录。
  2. 你的WORKDIR设为/home/uadmin/queuemgr/mongo_db_cache,然后把docker_inputs里的内容复制到了这个目录,但你的publisher.py其实在docker_inputs的上级目录(~/msw/queuemgr/mongo_db_cache),所以容器里的目标目录下根本没有这个文件,自然报错。

两种靠谱的修复方案:

  • 方案1:调整构建上下文(推荐)
    切换到publisher.py所在的目录运行构建命令,同时指定Dockerfile的路径:

    cd ~/msw/queuemgr/mongo_db_cache
    sudo docker build -t queuepublisher:latest . -f docker_inputs/publisher_docker_file
    

    这样COPY .就会把上级目录下的所有文件(包括publisher.py)复制到容器的/home/uadmin/queuemgr/mongo_db_cache,CMD里的路径也就完全匹配了。

  • 方案2:修改Dockerfile的COPY源路径
    如果你不想切换目录,可以在Dockerfile里明确指定复制上级目录的内容,但要注意:Docker构建上下文默认只能访问当前目录及子目录,所以需要确保上级目录在上下文范围内。不过方案1更稳妥,能避免路径混乱。

另外补充下:你之前测试的CMD ["pwd"]显示目录是/home/uadmin/msw/queuemgr/mongo_db_cache?这和你WORKDIR设置的/home/uadmin/queuemgr/mongo_db_cache不符,可能是测试时的笔误?不管怎样,核心是确保publisher.py被正确复制到容器里的目标路径。

二、解决日志文件不生成的问题

你的代码里写的是把日志写到容器的/var/log/example.log,但你运行容器时挂载的是-v /var/log:/log——这只是把宿主机的/var/log挂载到容器的/log目录,和代码里的/var/log完全没关系!

修复方法二选一:

  • 方法1:修改挂载参数
    把挂载路径改成容器代码实际写入的目录:

    sudo docker container run -v /var/log:/var/log --rm --name publisher queuepublisher
    

    这样容器里的/var/log就和宿主机的/var/log绑定了,日志会直接写到宿主机的对应目录。

  • 方法2:修改代码里的日志路径
    如果不想改挂载参数,就把代码里的日志路径改成/log/example.log:

    logging.basicConfig(filename='/log/example.log', level=logging.DEBUG)
    

    这样日志会写到容器的/log目录,而这个目录已经挂载到宿主机的/var/log了。

排查小技巧

可以在Dockerfile里临时加一行RUN ls -l /home/uadmin/queuemgr/mongo_db_cache,构建的时候就能看到容器里这个目录下的文件,确认publisher.py是否存在,快速定位路径问题。

内容的提问来源于stack exchange,提问作者owgitt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 18:47:46