You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

执行docker-compose up时遇权限错误:无法打开manage.py

解决Docker Compose启动时python: can't open file 'manage.py': [Errno 1] Operation not permitted错误

可能的原因与修复方案

1. 指定容器工作目录

你的docker-compose.yml未设置容器工作目录,执行命令时默认在容器根目录(/)查找文件,但代码挂载到了/code目录。可通过两种方式修正:

  • 在beanstalk-django服务中添加工作目录配置:
beanstalk-django:
    build: .
    command: bash -c "python manage.py migrate api && python manage.py runserver 0.0.0.0:8000"
    working_dir: /code  # 新增该行
    ports:
      - "80:8000"
    env_file:
      - .env
    depends_on:
      gpsdataviz-db:
        condition: service_healthy
    links:
      - "gpsdataviz-db"
    environment:
      - USER=${USER}
    volumes:
      - type: bind
        source: ./
        target: /code
  • 或者修改命令,先切换到/code目录:
command: bash -c "cd /code && python manage.py migrate api && python manage.py runserver 0.0.0.0:8000"

2. 检查本地文件与目录权限

  • 确认本地当前目录下存在manage.py,且具备可读权限:
    在本地终端执行:
    ls -la manage.py
    
    确保权限包含r(如-rw-r--r--)。
  • 若项目位于MacOS受保护路径(如/System、/Library),将项目移至/Users目录下——该路径不受系统完整性保护(SIP)限制,绑定挂载权限更宽松。

3. 调整容器运行用户权限

若容器默认普通用户无挂载目录访问权限,可临时以root用户运行(仅调试用,生产环境不建议):
在beanstalk-django服务中添加:

user: "root"

或在Dockerfile中配置合适用户并赋予目录权限:

RUN useradd -m appuser
WORKDIR /code
RUN chown -R appuser:appuser /code
USER appuser

4. 重置Docker Desktop文件共享设置

即使已修改过权限,仍建议:

  • 打开Docker Desktop偏好设置 → 资源 → 文件共享
  • 确认项目所在父目录已加入共享列表
  • 点击"Apply & Restart"重启Docker Desktop

5. 排查Dockerfile构建逻辑

若Dockerfile已将代码复制到容器内,绑定挂载的本地目录会覆盖容器内的/code。可临时注释volumes配置,测试容器能否正常启动:

# volumes:
#   - type: bind
#     source: ./
#     target: /code

若能启动,说明问题出在本地目录的挂载权限上,再针对性调整。


内容的提问来源于stack exchange,提问作者Hassan Raza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 11:35:20