Docker COPY命令异常:运行镜像时无法找到CSV配置文件
解决方案
核心问题
你的Dockerfile将文件复制到了根目录/,但设置的WORKDIR是/NoLegals,而代码用os.getcwd()获取当前工作目录(即/NoLegals)拼接文件路径,导致代码查找/NoLegals/NoLegals_Config.csv,但实际文件在/NoLegals_Config.csv,自然找不到。另外报错出现本地路径,说明代码可能存在硬编码路径的情况。
步骤1:修正Dockerfile的COPY命令
修改Dockerfile,把所有文件复制到WORKDIR指定的目录下(.代表当前工作目录/NoLegals):
WORKDIR /NoLegals # 复制文件到当前工作目录,而非根目录 COPY NoLegals_Config.csv . COPY main.py . COPY utils.py . # 后续环境配置、运行命令等保持不变
步骤2:排查代码中的硬编码路径
报错里出现本地路径/home/crusty.user/PythonProjects/NoLegals/NoLegals_Config.csv,说明代码中可能有部分逻辑没使用你写的filepath变量,而是直接写死了本地路径。全局搜索该路径,替换为动态生成的filepath:
# 确保所有读取CSV的代码都使用这个filepath filename = r'NoLegals_Config.csv' filepath = os.path.join(os.getcwd(), filename) # 读取文件示例 with open(filepath, 'r') as f: # 处理逻辑
步骤3:验证容器内文件位置(可选)
如果问题仍存在,可运行交互式容器检查文件位置:
sudo docker run -it nolegals bash
进入容器后执行以下命令:
pwd:确认当前工作目录是否为/NoLegalsls:查看当前目录下是否存在NoLegals_Config.csv、main.py等文件
内容的提问来源于stack exchange,提问作者Richard Kline
相关产品推荐
相关产品推荐

