Windows10 WSL环境下docker build报错找不到requirements.txt怎么办
问题根因
- 直接原因是
COPY . .指令执行时没有成功将宿主机的requirements.txt文件写入容器的/app目录,导致后续pip install时找不到对应文件。 - 触发该问题的核心是WSL的Windows挂载目录兼容问题:默认情况下WSL的
/mnt路径下挂载的Windows磁盘未开启元数据与权限映射支持,Docker构建时读取该路径下的文件会出现权限校验失败、文件无法识别的问题。 - 其他可能的触发原因:
- Windows端目标文件夹开启了加密、系统级权限限制,Docker Desktop的WSL集成组件没有读取权限
- 本地
.dockerignore文件存在误过滤requirements.txt的规则,或Windows格式的换行符导致.dockerignore解析异常
解决方案
方案1:开启WSL挂载盘元数据支持(长期最优)
该方案可以直接解决挂载目录的文件兼容问题,无需每次移动代码到WSL内部:
- 在WSL终端中执行命令编辑配置文件:
sudo nano /etc/wsl.conf - 写入以下配置内容:
[automount] options = "metadata,umask=22,fmask=11" mountFsTab = false
- 保存退出后,在Windows CMD或PowerShell中执行
wsl --shutdown重启WSL实例,之后再在/mnt路径下执行构建即可正常运行。
方案2:临时校验修复
如果不想修改WSL全局配置,可以按以下步骤排查:
- 执行构建前先在当前目录运行
ls命令,确认requirements.txt确实存在于当前工作目录 - 执行构建命令时明确指定上下文与Dockerfile路径:
docker build -f ./Dockerfile .
- 检查当前目录的
.dockerignore文件,删除会过滤requirements.txt、*.txt的规则,若文件是Windows端编写的,将换行符转换为LF格式即可。
内容的提问来源于stack exchange,提问作者Doggy Face
相关产品推荐
相关产品推荐

