使用 ObjectRocket 插件将带有 MongoDB 应用程序的 jHipster 部署到 Heroku

Posted

技术标签:

【中文标题】使用 ObjectRocket 插件将带有 MongoDB 应用程序的 jHipster 部署到 Heroku【英文标题】:Deploying a jHipster with MongoDB app to Heroku, with ObjectRocket addon 【发布时间】:2021-04-13 17:11:30 【问题描述】:

我创建了一个使用 MongoDB 数据库的 jHipster 应用程序。最近几天我正在尝试在 Heroku 上部署它。 我已经根据需要运行了 heroku 生成器。 “jhipster heroku”。我还使用“git push heroku master”将代码推送到 heroku 分支。但是,我仍然有一个问题。

原因:

org.springframework.beans.BeanInstantiationException: 失败 实例化 [org.springframework.data.mongodb.core.MongoDbFactorySupport]:工厂 方法 'mongoDbFactory' 抛出异常;嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 创建在类路径资源中定义的名称为“mongo”的bean [org/springframework/boot/autoconfigure/mongo/MongoAutoConfiguration.class]: 通过工厂方法实例化 Bean 失败;嵌套异常是 org.springframework.beans.BeanInstantiationException:失败 实例化 [com.mongodb.MongoClient]:工厂方法 'mongo' 抛出 例外;嵌套异常是 java.lang.IllegalArgumentException: 连接字符串无效。连接字符串必须以 'mongodb://' 或 'mongodb+srv://

我确实意识到我必须将由 ObjectRocket 插件提供的 MongoDB 连接字符串放在 .yml 文件中的某个位置,但我不确定在哪里。这不是 Deploying a JHipster/MongoDB application to Heroku 的重复,因为这个问题是 5 年前提出的,从那时起,Heroku 为 Heroku 上的 MongoDB 应用程序提供了一个子生成器。 另外,我应该以某种方式修改个人资料吗?

非常感谢您的帮助!

【问题讨论】:

【参考方案1】:

JHipster 应该在src/main/resources 下生成了一个application-heroku.yml。它应该包含 mongo db 连接 (spring.data.mongodb.uri) 的 spring 数据属性。您应该用您的对象火箭连接字符串替换该值。

旁注,为什么您会收到错误消息:JHipster 仅使用带有免费层的附加组件。对于 mongo db,它是 mLab 的插件。可惜已经停产了。相应地更新 JHipster 的 heroku 集成存在一个未解决的问题。 https://github.com/jhipster/generator-jhipster/issues/13424

【讨论】:

【参考方案2】:

我终于设法解决了。由于 application-heroku.yml 文件,我怀疑它。但这不是我唯一的问题。主要问题是我不知道我还必须编辑 Procfile。给任何在这里登陆的人的小费。您应该检查 Procfile 是否也使用数据库名称进行了编辑。

【讨论】:

以上是关于使用 ObjectRocket 插件将带有 MongoDB 应用程序的 jHipster 部署到 Heroku的主要内容,如果未能解决你的问题,请参考以下文章

Redis 使用的 10 个小技巧

无法使用带有 Docker 的 Grafana 对插件进行签名

带有不兼容插件的 Flutter Web

Eclipse(带有 J2EE 插件)不会将类文件构建到输出目录

带有导航和选项卡的 jQuery 地址插件

使用带有新信号槽语法的 Qt 插件系统在接口类中声明信号