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

Python脚本Docker部署报错:No such file or directory

解决Docker容器中Python脚本找不到文件的问题

问题根源

你的Python代码里硬编码的路径//some/LogFiles$是宿主机的路径,但Docker Compose已将该路径挂载到容器内的/check/some/LogFiles$,容器内不存在//some/LogFiles$这个路径,因此触发"No such file or directory"错误。

修复步骤

1. 修改Python代码中的路径

把代码里的路径替换为容器内的挂载路径:

# 替换原路径为容器内的挂载路径
for root, dirs, files in os.walk("/check/some/LogFiles$"):
    for filename in files:
        if "RSPowerBI" in filename:
            file = filename
with open(f'/check/some/LogFiles$/{file}') as fd:
    lines = fd.readlines()

2. 确认Docker挂载路径格式(针对Windows共享目录)

如果//some/LogFiles$是Windows网络共享目录,需确保Docker能正常访问:

  • 检查Docker Desktop是否开启了对应共享驱动器的访问权限
  • 确认宿主机本身可以正常访问该共享目录,避免因为宿主机无法访问导致容器挂载失效

3. 可选:用环境变量解耦路径(推荐)

为避免硬编码路径,可通过环境变量传递容器内的日志目录路径:

修改Python代码:

import os

# 从环境变量获取日志目录,默认值为容器挂载路径
log_dir = os.getenv("LOG_DIR", "/check/some/LogFiles$")
target_file = None

for root, dirs, files in os.walk(log_dir):
    for filename in files:
        if "RSPowerBI" in filename:
            target_file = filename
            break  # 找到目标文件后提前退出循环
    if target_file:
        break

if target_file:
    with open(f'{log_dir}/{target_file}') as fd:
        lines = fd.readlines()
else:
    print("未找到包含RSPowerBI的日志文件")

修改docker-compose.yml:

version: '3.1'

services:
  bot2:
    image: first3
    build: ./
    restart: always
    volumes:
      - //some/LogFiles$:/check/some/LogFiles$
    environment:
      - LOG_DIR=/check/some/LogFiles$

额外注意点

  • 确认共享目录中确实存在包含RSPowerBI的文件,避免因找不到文件导致后续open操作报错
  • 若容器内用户无挂载目录的读取权限,可在Dockerfile中添加RUN chmod -R 755 /check/some/LogFiles$调整权限

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 07:55:03