在本系列的 第一篇文章 中,我创建了一个基于 Spring Boot + Data JPA 堆栈的简单微服务,以 JSON 格式显示可用产品列表。在 第二部分 中,我演示了如何将此应用程序上传到 Pivotal Cloud Foundry。在本文中,我将演示在 Heroku 上部署所需的更改。
英雄库
至于 PCF,Heroku 需要一个本地专用应用程序。对于 Heroku,它称为 Toolbelt。安装后,需要通过工具带登录自己的帐户:
heroku login
下一步是在 Heroku 上创建应用程序。 Cloud Foundry 和 Heroku 之间的主要区别在于,前者部署现成的二进制文件,而 Heroku 从源代码构建它们。创建 Heroku 应用程序还将创建一个要推送到的远程 Git 存储库,因为 Heroku 使用 Git 来管理代码。
heroku login
heroku login
heroku create
命令还通过添加新的
heroku
remote 来更新 .git 配置。让我们推送到远程存储库:
heroku login
此时,需要告诉 Heroku 如何启动新建的应用程序。这是通过位于项目根目录的
Procfile
完成的。它应该包含对 Heroku 的提示,表明我们正在使用 Web 应用程序——可通过 http(s) 和标准 Java 命令行访问。此外,Web 端口应绑定一个 Heroku 记录的环境变量:
heroku login
该应用程序尚未运行,因为日志会告诉您。要显示远程日志,请键入:
heroku login
应该有这样的东西:
heroku login
这暗示需要一个 web 节点,或者用 Heroku 的说法,一个 dyno。让我们开始一个:
heroku login
该应用程序现在应该可以在 https://salty-harbor-2168.herokuapp.com/products 上运行(您应该耐心等待,因为它是一个免费计划,该应用程序可能正在休眠)。然而,仍然缺少一些东西:它仍然在嵌入式 H2 数据库上运行。我们应该切换到更具弹性的数据库。默认情况下,Heroku 免费提供 PostgreSQL 开发数据库。可以通过用户界面或命令行创建这样的数据库。
Spring Boot 文档描述了 Spring Cloud 连接器 库。它能够自动检测应用程序是否在 Heroku 上运行,并创建绑定到 Heroku 提供的 Postgres 数据库的数据源。然而,尽管我尽了最大的努力,我还是没能完成这项工作,每次都会遇到以下问题:
heroku login
是时候发挥一点创意了。让我们显式地配置它,而不是嗅探数据库及其配置。这需要为 Heroku 创建一个专用的配置文件配置属性文件
src/main/resources/application-heroku.yml
:
heroku login
您可以在 Heroku 用户界面中找到确切的数据库连接设置。请注意方言似乎是必需的。此外,应该更新 POM 以将 Postgres 驱动程序添加到依赖项中。
最后,要激活 Heroku 上的配置文件,请将
Procfile
更改为:
heroku login
再次提交并推送到 Heroku,应更新应用程序以使用提供的 Postgres。
下周,我将创建一个新的购物袋微服务,它依赖于这个微服务并针对失败进行设计。