我有一个Django应用程序并且在Google App Engine中灵活运行。我知道如何使用云代理或通过设置DATABASES
值来运行迁移,但我希望通过在部署步骤中执行迁移来自动运行迁移。但是,似乎没有办法在部署之前或之后运行自定义脚本。
我提出的唯一方法是在entrypoint命令中执行此操作,您可以在app.yaml
中设置:
entrypoint: bash -c 'python3 manage.py migrate --noinput && gunicorn -b :$PORT app.wsgi'
这感觉很像做错了。很多谷歌搜索没有提供更好的答案。
答案 0 :(得分:1)
在app.yaml文件中定义python3 manage.py migrate
命令会在每次生成新实例并设置为提供流量时运行。虽然从技术上讲这可能不是问题(如果数据库架构没有改变就不会发生迁移),这不是声明它的正确位置。
您希望此命令在每个新版本代码推送时运行一次。这非常适合CI / CD方法。例如,使用Bitbucket Pipelines或Travis CI的Google Cloud在线文档有几个教程,但您可以使用许多其他CI / CD解决方案。