能否将Flask+Vue项目部署到Heroku并使用自有MySQL服务器且不使用Heroku dynos
部署方案可行性说明
首先需要澄清你需求中可能存在的歧义,分两种情况给出结论:
情况1:实际需求为使用Heroku dynos跑应用,仅不使用Heroku官方托管的数据库服务,对接自有MySQL服务器
- 方案完全可实现,属于Heroku上非常通用的外部服务对接场景
- 具体实现要点:
- 先配置你的自有MySQL服务器权限:开放公网访问端口(默认3306),将Heroku的出站IP段加入MySQL的访问白名单,避免连接被拦截;如果你的MySQL支持证书认证,建议开启证书校验提升连接安全性
- 将Flask项目中的数据库连接配置改为你的自有MySQL参数,可直接通过Heroku的
config vars功能配置对应环境变量(比如DB_HOST、DB_PORT、DB_USER等),不要硬编码在代码里 - 项目部署可以根据你的架构选择:前后端分离部署的话,Vue打包后的静态资源用Nginx托管在单独的web dyno,Flask后端跑在独立的worker dyno;也可以将Vue打包后的dist目录放到Flask的静态资源目录合并部署,仅需一个dyno即可运行
- 不要在Heroku后台开通任何官方数据库类addon,避免自动生成的数据库配置覆盖你自定义的参数
注意:请保证你的自有MySQL服务器与Heroku机房的网络延迟足够低,否则会明显拖慢应用接口响应速度;Heroku不会对外部自有数据库的数据做备份,需要你自行做好数据备份策略。
情况2:确实要求完全不使用Heroku dynos服务,同时将整个Flask+Vue项目部署在Heroku平台
- 方案不可行
- 原因:dynos是Heroku官方唯一提供的应用运行载体,所有部署在Heroku平台上的服务端代码、静态资源托管、反向代理等服务都必须依赖dynos实例运行,没有dynos的情况下你无法在Heroku上托管任何项目代码。如果不想使用dynos,建议选择其他支持自定义运行环境的云服务厂商部署项目。
内容的提问来源于stack exchange,提问作者Sakar_14
相关产品推荐
相关产品推荐

