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_data
到 True
在 setup.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。
这个问题是关于flask-migrate在部署时的使用模式。要使用您的应用程序设置服务器或 docker 容器,您需要创建数据库。
通常与 https://github.com/miguelgrinberg/flasky 中一样,迁移文件夹位于项目的根目录中。这是有道理的,但这意味着在生产中,如果您将 flask 应用程序作为安装包拉取,则 migrations 文件夹不可用。
将迁移文件夹复制到容器并运行在那里升级,或者完全是其他东西的正确模式是什么?这看起来很尴尬,因为我必须使迁移与我从 python 包存储库中提取的应用程序版本保持同步。我知道可以完全放弃迁移而只做 db.create_all()
,但如果这是答案,那么我可能会对数据库迁移的目的感到困惑。
您可以通过两步将文件包含到包中:
1.set include_package_data
到 True
在 setup.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。