这是我的Procfile,它完全按照你的描述工作:
release: python manage.py migrate
web: run-program waitress-serve --port=$PORT settings.wsgi:application
有关定义发布流程的信息,请参阅Heroku文档:
https://devcenter.heroku.com/articles/release-phase#defining-a-release-command个
release命令在创建发布后立即运行,但在将发布部署到应用程序的dyno队列之前.这意味着它将在创建新版本的事件之后运行:
- 应用程序构建
- 管道促销活动
- 配置变量更改
- 回退
- 通过平台API发布
在release命令成功完成之前,应用程序dynos不会在新版本上启动.
如果Release命令以非零退出状态退出,或者如果它被dyno管理器关闭,那么Release将被丢弃,并且不会被部署到应用程序的 struct 中.
不过,请注意,此功能仍处于测试阶段.
Update:
当您有删除模型和内容类型的迁移时,Django需要在控制台中进行确认
以下内容类型已过时,需要删除:
...
通过外键与这些内容类型相关的任何对象也将被删除.是否确实要删除这些内容类型?如果你不确定,回答‘不’.键入"yes"继续,或键入"no"取消:
配置文件中的Migrate命令不响应,Release命令失败.在此方案中,删除迁移行,实时推送,手动运行迁移命令,然后将其重新添加以供将来部署.