Docker部署Django应用时挂载Volumes出现文件缺失问题求助
Docker化Django应用挂载Volumes后找不到manage.py的问题解决
问题现象
未挂载Volumes时应用正常运行,挂载后出现如下错误:
django_app | python: can't open file '/app/manage.py': [Errno 2] No such file or directory
相关配置
docker-compose.yml:
version: '3.8' services: app: build: . volumes: - ./django:/app # 问题出在此处 ports: - "8000:8000" image: app:django container_name: django_app command: python manage.py runserver 0.0.0.0:8000
Dockerfile:
FROM python:3.12.1-slim ENV PYTHONUNBUFFERED=1 WORKDIR /app COPY requirements.txt requirements.txt RUN pip3 install -r requirements.txt COPY . .
使用的构建运行命令:
docker-compose build docker-compose up
解决方法
- 检查本地挂载目录结构:容器内的
/app目录会被本地./django目录挂载覆盖,因此本地./django目录中必须包含manage.py及完整的Django项目文件。如果本地./django并非项目根目录,挂载后容器内/app会直接缺失必要运行文件。 - 修正挂载路径:如果Django项目根目录就是Dockerfile所在的当前目录,应将挂载路径改为
./:/app,确保本地项目文件完整映射到容器/app目录(适用于开发场景代码热重载);若./django是项目子目录,需调整为./django:/app/[对应子目录],避免覆盖容器内已有的项目结构。 - 明确挂载逻辑:Volumes挂载是用本地目录完全替换容器内目标目录的原有内容,而非合并文件,必须保证本地挂载目录的结构与容器运行所需结构一致。
内容的提问来源于stack exchange,提问作者B A.J Amar
相关产品推荐
相关产品推荐

