flask-migrate 在生产中的使用

flask-migrate usage in production

这个问题是关于flask-migrate在部署时的使用模式。要使用您的应用程序设置服务器或 docker 容器,您需要创建数据库。

通常与 https://github.com/miguelgrinberg/flasky 中一样,迁移文件夹位于项目的根目录中。这是有道理的,但这意味着在生产中,如果您将 flask 应用程序作为安装包拉取,则 migrations 文件夹不可用。

将迁移文件夹复制到容器并运行在那里升级,或者完全是其他东西的正确模式是什么?这看起来很尴尬,因为我必须使迁移与我从 python 包存储库中提取的应用程序版本保持同步。我知道可以完全放弃迁移而只做 db.create_all(),但如果这是答案,那么我可能会对数据库迁移的目的感到困惑。

您可以通过两步将文件包含到包中:

1.set include_package_dataTruesetup.py:

from setuptools import find_packages, setup

setup(
    name='myapp',
    version='1.0.0',
    packages=find_packages(),
    include_package_data=True,  # <--
    zip_safe=False,
    install_requires=[
        'flask',
    ],
)

2.Include MANIFEST.in 中的文件模式:

graft myapp/static
graft myapp/templates
graft migrations  # <--

构建包时将包含此文件。有关可用的完整 MANIFEST.in 命令,请参阅 here