Windows下Docker挂载NAS目录报错:寻求文件找不到问题的解决方案
问题:Docker-Compose执行
up时找不到manage.py(NAS映射路径场景) 在Windows系统执行docker-compose up时出现错误:
python: can't open file '/code/manage.py': [Errno 2] No such file or directory
已排除Python、Django或本地路径配置问题,仅当项目存放在WiFi连接的西数MyCloudX2Ultra Linux NAS(通过Windows映射为网络驱动器,如N:盘对应\\<本地IP>\...)时触发该问题,将项目移至本地Windows文件夹即可解决,但本地SSD空间不足无法长期使用。
相关配置文件
Dockerfile
# Pull base image FROM python:3.10.4-slim-bullseye # Set environment variables ENV PIP_DISABLE_PIP_VERSION_CHECK 1 ENV PYTHONDONTWRITEBYTECODE 1 ENV PYTHONUNBUFFERED 1 # Set work directory WORKDIR /code # Install dependencies COPY ./requirements.txt . RUN pip install -r requirements.txt # Copy project COPY . .
docker-compose.yml
version: "3.9" services: web: build: . ports: - "8000:8000" command: python manage.py runserver 0.0.0.0:8000 volumes: - .:/code
可行解决方案建议
优化NAS权限与映射方式
- 确保NAS共享文件夹给Windows用户开放完全控制权限(含读、写、执行),避免容器访问时因权限不足无法识别文件。
- 放弃网络驱动器盘符映射,直接用UNC路径挂载,修改
docker-compose.yml的volumes配置:
(或转义反斜杠写法:volumes: - "//<NAS本地IP>/共享文件夹路径:/code""\\\\<NAS本地IP>\\共享文件夹路径:/code")
调整容器构建逻辑
删除docker-compose.yml中的volumes字段,依赖Dockerfile里的COPY . .将代码打包进镜像,容器启动时直接使用镜像内的文件,彻底规避远程文件系统映射问题。缺点是代码变更后需要重新构建镜像。修复SMB协议与系统设置
- 在NAS端调整SMB版本为3.0及以上,提升与Windows的兼容性,避免因协议过低导致文件映射不完整。
- 关闭Windows快速启动功能,该功能可能导致网络驱动器挂载异常,影响Docker对远程文件的访问。
硬编码NAS绝对路径
如果必须使用挂载,直接在docker-compose.yml中写NAS的UNC绝对路径,替代依赖网络驱动器盘符:services: web: # ...其他配置 volumes: - "//192.168.1.100/my_project:/code"
内容的提问来源于stack exchange,提问作者TickboxPhil
相关产品推荐
相关产品推荐

