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

使用CLI部署Django至AWS EB时首次无法识别新迁移文件求助

解决AWS Elastic Beanstalk首次部署无法识别Django迁移文件的问题

这问题我之前踩过一模一样的坑!核心原因是你的container_commands配置里,迁移命令的执行逻辑有小问题,导致首次部署时EB找不到你的迁移文件,第二次部署时因为实例上已经缓存了代码,才正常识别。

问题分析

你当前的01_migrate用的是全局的django-admin.py migrate命令,但EB的首次部署流程中,这个命令会碰到两个关键问题:

  • 全局django-admin无法自动定位到你的Django项目的settings.py,自然检测不到app下的迁移文件
  • 命令执行的默认工作目录不是你的项目根目录(ras-server,也就是manage.py所在的目录),导致找不到迁移文件的存放路径

而你的02_collectstatic用的是项目内的manage.py,路径逻辑是对的,所以这个命令每次都能正常执行,但迁移命令因为路径问题首次失败。

修正方案

你只需要把迁移命令改成和collectstatic一致的逻辑,确保用项目内的manage.py执行,并且明确指定工作目录(更稳妥):

修改后的container_commands配置

container_commands:
  01_migrate:
    command: "python manage.py migrate"
    leader_only: true
    cwd: "/opt/python/current/app/ras-server"  # 指定manage.py所在的项目根目录
  02_collectstatic:
    command: "python manage.py collectstatic --noinput"
    cwd: "/opt/python/current/app/ras-server"

关键调整点

  • 替换命令:把django-admin.py migrate改成python manage.py migrate,manage.py会自动加载项目根目录下的settings.py,确保能找到你的app和对应的迁移文件
  • 明确工作目录:添加cwd参数指定命令执行的路径为你的项目根目录,避免EB默认工作目录不对导致的路径混乱

额外验证(可选)

如果修改后还是有问题,可以查看EB实例的部署日志,确认两个细节:

  • container_commands执行时的工作目录是否和你指定的一致
  • 迁移命令执行时有没有抛出“找不到settings”或“无可用迁移文件”的具体错误

这样调整后,首次部署时EB就能正确识别到迁移文件,不用再重复部署两次了!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:20:02