如何在Heroku上部署GitLab托管的Spring Boot项目
Heroku部署GitLab托管Spring Boot项目的可行方案
不需要强制将GitLab上的Spring Boot项目迁移至GitHub才能完成Heroku部署。除了关联GitHub仓库的自动部署方式外,以下3种方案都可以正常完成部署,适配你已经完成Heroku应用创建、PostgreSQL配置的项目现状:
方案1:Heroku CLI 手动Git部署(最易上手,零额外配置成本)
这是Heroku原生支持的通用部署方式,和代码托管在哪个平台没有关联:
- 本地安装Heroku命令行工具后,在项目根目录执行
heroku login,按照弹窗提示完成账号授权 - 确认本地项目的所有代码改动已经提交到本地Git(本地已关联GitLab远程仓库的话不需要额外调整仓库配置)
- 执行
heroku git:remote -a <你的Heroku应用名称>,将Heroku的部署远程仓库添加到本地Git配置中 - 每次需要部署时,直接执行
git push heroku main(主分支为master则替换为master),Heroku会自动识别Spring Boot项目栈、执行Maven/Gradle构建、绑定端口、关联你已经配置的PostgreSQL插件,构建完成后就可以正常访问。
方案2:GitLab CI/CD 自动部署(和GitHub自动部署体验一致)
如果需要实现代码推送后自动部署,不需要手动敲命令,可以直接用GitLab的CI能力对接Heroku:
- 进入Heroku账号设置页面,生成个人API Key并复制保存
- 打开GitLab对应项目的「设置 > CI/CD > 变量」页面,添加两个加密环境变量:
HEROKU_APP_NAME填写你创建的Heroku应用名,HEROKU_API_KEY填写刚才复制的Heroku API Key - 在项目根目录新建
.gitlab-ci.yml配置文件,配置触发规则(比如每次代码合入主分支时触发),在部署脚本中添加Heroku CLI安装、登录、代码推送的逻辑即可,后续所有代码合入都会自动完成构建部署,不需要手动操作。
方案3:容器镜像部署(适配容器化项目)
如果你的Spring Boot项目已经做了Docker容器化,可以直接用Heroku的容器Registry部署,完全不依赖代码托管平台的关联逻辑:
- 本地或通过CI流程将项目构建成标准Docker镜像
- 执行
heroku container:login登录Heroku容器仓库,给构建好的镜像打上Heroku要求的对应标签后,推送到Heroku的容器Registry - 执行
heroku container:release web即可完成版本发布。
注意事项:你已经修改了application.properties中的PostgreSQL相关配置,请确保配置优先读取Heroku自动注入的
DATABASE_URL环境变量,不要硬编码固定的数据库地址、账号、密码。Heroku的PostgreSQL插件会定期轮换连接凭证,硬写固定配置后续会出现数据库连接失败的问题,Spring Boot原生支持读取系统环境变量注入配置,不需要额外修改业务代码。
内容的提问来源于stack exchange,提问作者Tilek Zholdoshbek
相关产品推荐
相关产品推荐

