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

Docker容器中相对路径读取文件报FileNotFoundError求助

解决Docker容器中相对路径读取配置文件失败的问题

问题原因

相对路径的解析完全依赖当前执行代码时的工作目录。本地运行时,你的工作目录是convertor文件夹,../config/config.json会正确指向项目根目录下的config文件夹;但在Docker容器中,WORKDIR被设置为/app,当你在这个目录下运行convertor里的代码时,../config会解析到/(/app的上级目录),而你的配置文件实际在/app/config,因此抛出找不到文件的错误。

解决方案

方案1:使用基于脚本位置的绝对路径(推荐)

修改代码,通过脚本自身的绝对位置来拼接配置文件路径,彻底摆脱工作目录的影响:

import os

# 获取当前脚本所在目录的绝对路径
script_dir = os.path.dirname(os.path.abspath(__file__))
# 拼接配置文件路径:从脚本目录向上一级,再进入config文件夹
config_path = os.path.join(os.path.dirname(script_dir), "config", "config.json")

with open(config_path) as json_config:
    # 处理配置逻辑

这种方式无论在本地还是Docker容器中运行,路径都会自动适配,是最稳定的解决方案。

方案2:调整Docker容器的工作目录

保持代码中的相对路径不变,修改Dockerfile,将工作目录切换到代码所在的convertor文件夹:

RUN mkdir /app
COPY . /app
WORKDIR /app/convertor
# 后续运行代码的命令(比如 python your_script.py)

这样容器内的工作目录和本地一致,../config/config.json会正确指向/app/config/config.json。

方案3:修改代码中的相对路径(不推荐)

如果一定要在/app目录下运行代码,可以把路径改为./config/config.json,但这会导致本地运行时路径错误(本地工作目录是convertor,./config会指向convertor/config,而实际配置在上级目录),因此不建议使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 11:46:04