flask-migrate在生产中的使用

时间:2018-05-25 21:16:15

标签: flask devops flask-migrate

这个问题是关于部署时烧瓶迁移的使用模式。要使用您的应用程序设置服务器或泊坞窗容器,您需要创建数据库。

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

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

1 个答案:

答案 0 :(得分:3)

您可以将文件包含在一个包中,包含两步:

1. 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', ], ) MANIFEST.in

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

2.在MANIFEST.in中包含文件模式:

public function avatar(Request $request)
    {
        $user = User::find(Auth::id());
        $validator = Validator::make($request->all(), [
            'avatar' => 'required'
        ]);
        if ($validator->fails()) {
            return response()->json(['errors' => $validator->errors()]);
        } else {
            $image = $request->get('avatar');
            //base64_decode($file_data)
            $path = Storage::putFile('avatars', base64_decode($image));

            $user->avatar_url = $path;
            if ($user->save()) {
                //return redirect()->route('user_profile_settings');
            }
        }
    }

构建程序包时将包含此文件。有关可用的完整array = [] userInput = sys.stdin array.append(userInput.readline().strip()) firstName,lastName = map(str,userInput.readline().split(" ")) print(firstName) print(lastName) print(array) 命令,请参阅here