你好读者,
我最近尝试在Heroku上设置一个Spring Boot应用程序,该应用程序可以连接到MongoDB Atlas上托管的MongoDB数据库。一路上,我面临着想记录的几个挑战,以供将来参考。我认为这些信息也可能对可能尝试做同一件事的其他人有帮助。
这是我需要快速部署所需的东西:
- 诸如Intellij之类的文本编辑器
- 春季启动项目
- Mongodb Atlas的帐户
- 与Heroku的帐户
我使用spring initializr [start.spring.io]设置了一个示例弹簧启动项目。
接下来,我添加了一些简单的依赖项,例如Spring Web,Spring Boot Dev工具和Spring Data MongoDB。
我创建了一个简单的REST服务,该服务只有一种将详细信息存储到数据库的方法。
模型
部署到Heroku
要将我的应用程序部署到Heroku,我遵循以下步骤:
- 首先,我在Heroku上创建了一个帐户。
- 然后,我通过单击“ new”创建了一个新应用,并给它命名和区域。
- Heroku会自动为我们创建许多事情,但是我们只需要专注于它为托管应用程序提供的部署选项。
- 要将我的代码部署到Heroku,我需要拥有一个GitHub存储库来存储它。这个存储库可以是我的个人GitHub存储库,也可以是创建应用程序时创建的Heroku提供的GitHub存储库。
- 我选择使用Heroku提供的GitHub存储库来推动我的更改。
将更改推向Heroku Git存储库
git init
heroku git:remote -a sample-prooject
git add
git commit -m "initial commit"
git push https://git.heroku.com/sample-prooject.git
现在,每当我推动更改存储库时,Heroku都会自动启动构建过程以部署更新的应用程序。
但是,我在部署过程中遇到了错误。此错误的原因是,默认情况下,Heroku使用Java 8编译,但是我的项目被指定用于使用Java17。
要解决此问题并指示Heroku处理Java 17,我需要在项目的根文件夹中添加一个名为“ System.properties”的文件。该文件包括以下行:
java.runtime.version = 17
将更改添加到我的存储库后,我使用命令“ git push https://git.heroku.com/sample-prooject.git”将更改推向了Heroku。
接下来,我想将数据存储在基于云的MongoDB数据库中,并决定将MongoDB Atlas用于此目的。
要开始 mongodb atlas ,我遵循以下步骤:
- 我在Mongodb Atlas上创建了一个帐户。
- 我选择了部署数据库的M0选项,因为它是免费的。
- 我选择了AWS作为提供商,并选择了最近的可用区域。
- 我将我的群集命名为“群集”。
- 设置集群后,我为MongoDB数据库创建了一个数据库用户。
- 现在,我单击了MongoDB Atlas仪表板中的“连接”。
spring.data.mongodb.uri=mongodb+srv://preethi27916:<yourpw>@cluster.ogokpuw.mongodb.net/?retryWrites=true&w=majority
spring.data.mongodb.database=sampledb
- 现在,我将更改推向Heroku git来托管应用程序。
- 接下来,我添加了一个连接IP地址(即我想从该数据库连接到此数据库的IP地址),然后单击“连接到应用程序”。 [在设置应用程序和数据库之间建立连接的最初阶段,我面临着连接失败的问题。经过一番调查,我发现MongoDB Atlas并未认可Heroku部署的应用IP。 要解决此问题,我必须通过指定0.0.0.0/0来白名单IP地址,这意味着可以从任何IP地址访问我的数据库。]。
- MongoDB Atlas为我提供了一个连接字符串,我需要在我的Spring Boot Project的应用程序属性文件(位于资源文件夹中)中指定。
最后,我通过使用帖子方法调用“ https://sample-prooject.herokuapp.com/name/ihteerp”来测试我的应用程序。
测试我的应用程序并验证数据是否已插入我的MongoDB数据库后,我可以确认我已经成功完成了应用程序和数据库的部署,并设置了两者之间的交互。
>