部署Django应用到AWS Elastic Beanstalk LM2时01_migrate命令报错如何解决
Django部署Amazon Linux 2 Elastic Beanstalk迁移报错修复方案
修复后可用的db-migrate.config配置
container_commands: 01_migrate: command: "bash -c 'source /var/app/venv/*/bin/activate && cd /var/app/staging && python3 manage.py migrate --noinput'" leader_only: true option_settings: aws:elasticbeanstalk:application:environment: DJANGO_SETTINGS_MODULE: packsapp.settings
核心修改点说明
- 命令外层增加
bash -c包裹:Amazon Linux 2环境下container_commands默认使用sh执行,原生不支持source语法,用bash调用可避免语法报错 - 新增
cd /var/app/staging切换工作目录:container_commands执行阶段应用代码存放在临时staging目录,还未同步到/var/app/current路径,不切换目录会找不到manage.py和项目模块 - 补全
--noinput参数:避免Django执行迁移时等待人工确认输入,导致命令超时失败
异常排查建议
如果修改配置后仍报错,可登录对应EC2实例查看/var/log/eb-engine.log日志,定位migrate命令执行的具体报错信息,常见的关联问题包括数据库安全组未放行Elastic Beanstalk实例访问、数据库连接配置错误、迁移文件存在语法冲突。
内容的提问来源于stack exchange,提问作者Rahul Sharma
相关产品推荐
相关产品推荐

