Bab*_*abu 9 python django database-migration amazon-web-services amazon-elastic-beanstalk
我正在使用亚马逊的Elastic Beanstalk和Django 1.8.2.这是我的容器命令,
container_commands:
01_wsgipass:
command: 'echo "WSGIPassAuthorization On" >> ../wsgi.conf'
02_makemigrations:
command: "source /opt/python/run/venv/bin/activate && python manage.py makemigrations --merge --noinput"
leader_only: true
03_migrate:
command: "source /opt/python/run/venv/bin/activate && python manage.py migrate --noinput"
leader_only: true
Run Code Online (Sandbox Code Playgroud)
由于某些原因,migrate命令被杀死.即使在我的本地有一个新的数据库,所有迁移工作都很好.但是以下是eb-activity.log上出现的错误.
Synchronizing apps without migrations:
Creating tables...
Running deferred SQL...
Installing custom SQL...
Running migrations:
Rendering model states.../bin/sh: line 1: 21228 Killed python manage.py migrate --noinput
(ElasticBeanstalk::ExternalInvocationError)
Run Code Online (Sandbox Code Playgroud)
注意:相同的容器命令在Elastic Beanstalk中没有任何问题,工作正常.我尝试使用--verbose 3migrate命令,但没有得到任何其他调试消息.
有解决方案吗 提前致谢.
在使用较差的日志记录机制进行故障排除时,AWS对开发人员不友好.
作为最近为Django项目评估EBS的狂热AWS用户,出于同样的原因,我完全赞同这一点.我最终和Heroku一起去了这个原因我不会进入,但我认为以下模式对任何一种方式都有帮助.
准备你的生产环境的步骤可以在不同的地方进行; 它们不必在您的目标Web服务器环境中发生.
我最终将我的make/migrate任务从我的部署自动化中拉出来,转移到之前发生的任务中.我的目标Web服务器环境中发生的唯一事情与该服务器上的代码直接相关.
换句话说:如果您有用于构建/测试的CI工具,我建议您将make/migrate和任何其他准备工作拉到Web服务器之外的环境中,然后进入部署管道.就像是:
然后,您将分离应用程序服务器的自动化问题和其他prod环境的自动化问题,并让CI处理该问题.你可以在同一个地方处理它们,但使用EBS的设施显然有点笨拙.
| 归档时间: |
|
| 查看次数: |
1401 次 |
| 最近记录: |