使用Docker Compose部署Django+PostgreSQL时找不到manage.py文件
Docker Compose部署Django+PostgreSQL:找不到manage.py错误解决
问题核心
执行docker compose run web python manage.py startapp aplicacion或docker compose run web django-admin startproject proyecto时,容器提示/code/manage.py不存在,但本地明明有这个文件——本质是本地文件没同步到容器的/code目录,要么是卷挂载配置错误,要么是工作目录设置不对。
逐一排查修复
1. 检查docker-compose.yml的卷映射
确保web服务的volumes配置把本地当前目录映射到容器的/code:
services: web: build: . volumes: - .:/code # 这条必须有,本地当前目录同步到容器/code # 其他配置(ports、depends_on等)不变
如果这里漏写或者路径写错,容器里的/code就是空的,自然找不到manage.py。
2. 检查Dockerfile的工作目录
Dockerfile必须明确设置工作目录为/code,否则执行命令时会在默认目录找文件:
FROM python:3.11-slim WORKDIR /code # 关键,后续所有命令都在/code下执行 COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt COPY . .
没加这条的话,哪怕卷挂载对了,执行python manage.py时也会在根目录找,肯定找不到。
3. 确认本地manage.py的位置
你的manage.py必须和docker-compose.yml在同一个文件夹里,不然卷映射.:/code会把上级目录同步进去,容器的/code里就没有这个文件。
4. 注意命令执行顺序
如果是刚初始化项目,本地还没有manage.py,得先在容器里创建项目并同步到本地:
- 先执行:
docker compose run web django-admin startproject proyecto .(末尾的.不能丢,确保项目文件生成在容器的/code,也就是本地当前目录) - 等本地生成manage.py后,再执行
docker compose run web python manage.py startapp aplicacion就正常了。
快速验证
执行这条命令查看容器/code目录的文件:
docker compose run web ls -l /code
如果能看到manage.py,说明配置没问题,重新执行原命令即可。
内容的提问来源于stack exchange,提问作者JAOdev
相关产品推荐
相关产品推荐

