ala*_*eno 5 java spring heroku mongodb jhipster
JHipster提供了用于将应用程序部署到云提供程序(例如Heroku和Openshift)的子生成器,但由于Mongeez需要管理员特权(这在PaaS环境中是不可能的),因此不适用于使用MongoDB的应用程序。
但是,只要停用Mongeez,就应该可以在云提供商上运行JHipster + MongoDB。我做了以下(使用Heroku):
prod,则不会实例化Mongeez。_HerokuDatabaseConfiguration.java(这是针对JDBC的),并且在使用的Procfile中,我将配置文件更改为prod(而不是prod,heroku)并删除了参数--spring.datasource.heroku-url=$DATABASE_URL。它工作得很好,但是我在注入MongoDB连接字符串时遇到了问题。目前,凭据已“硬编码”为application-prod.yml,因此在凭据更改的情况下有必要重新部署整个应用程序。在另一种尝试中,我添加spring.data.mongodb.uri=$MONGOLAB_URI了Procfile,但是没有任何效果(除非我错过了什么)。
那么我该如何解决这个问题呢?就像我说的那样,该应用程序在Heroku上运行没有任何问题,但是最好从MONGOLAB_URI环境变量中获取连接详细信息。在其他新闻中,我感到我不了解cloud个人资料(目前不使用该个人资料)。
您可以使用 mongobee 代替Mongeez为您的应用程序提供迁移逻辑。
我已经尝试过了,它适用于 heroku。
这是我的 jhipster 默认 mongobee 迁移代码,与 mongeez 具有相同的效果。
package your.package.name.config.dbmigrations;
import com.github.mongobee.changeset.ChangeLog;
import com.github.mongobee.changeset.ChangeSet;
import com.mongodb.BasicDBObjectBuilder;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
/**
* Creates the initial database setup
*/
@ChangeLog(order = "001")
public class InitialSetupMigration {
private Map<String, String>[] authoritiesUser = new Map[]{new HashMap<>()};
private Map<String, String>[] authoritiesAdminAndUser = new Map[]{new HashMap<>(), new HashMap<>()};
{
authoritiesUser[0].put("_id", "ROLE_USER");
authoritiesAdminAndUser[0].put("_id", "ROLE_USER");
authoritiesAdminAndUser[1].put("_id", "ROLE_ADMIN");
}
@ChangeSet(order = "01", author = "initiator", id = "01-addAuthorities")
public void addAuthorities(DB db) {
DBCollection authorityCollection = db.getCollection("jhi_authority");
authorityCollection.insert(
BasicDBObjectBuilder.start()
.add("_id", "ROLE_ADMIN")
.get());
authorityCollection.insert(
BasicDBObjectBuilder.start()
.add("_id", "ROLE_USER")
.get());
}
@ChangeSet(order = "02", author = "initiator", id = "02-addUsers")
public void addUsers(DB db) {
DBCollection usersCollection = db.getCollection("jhi_user");
usersCollection.createIndex("login");
usersCollection.createIndex("email");
usersCollection.insert(BasicDBObjectBuilder.start()
.add("_id", "user-0")
.add("login", "system")
.add("password", "$2a$10$mE.qmcV0mFU5NcKh73TZx.z4ueI/.bDWbj0T1BYyqP481kGGarKLG")
.add("first_name", "")
.add("last_name", "System")
.add("email", "system@localhost")
.add("activated", "true")
.add("lang_key", "en")
.add("created_by", "system")
.add("created_date", new Date())
.add("authorities", authoritiesAdminAndUser)
.get()
);
usersCollection.insert(BasicDBObjectBuilder.start()
.add("_id", "user-1")
.add("login", "anonymousUser")
.add("password", "$2a$10$j8S5d7Sr7.8VTOYNviDPOeWX8KcYILUVJBsYV83Y5NtECayypx9lO")
.add("first_name", "Anonymous")
.add("last_name", "User")
.add("email", "anonymous@localhost")
.add("activated", "true")
.add("lang_key", "en")
.add("created_by", "system")
.add("created_date", new Date())
.add("authorities", new Map[]{})
.get()
);
usersCollection.insert(BasicDBObjectBuilder.start()
.add("_id", "user-2")
.add("login", "admin")
.add("password", "$2a$10$gSAhZrxMllrbgj/kkK9UceBPpChGWJA7SYIb1Mqo.n5aNLq1/oRrC")
.add("first_name", "admin")
.add("last_name", "Administrator")
.add("email", "admin@localhost")
.add("activated", "true")
.add("lang_key", "en")
.add("created_by", "system")
.add("created_date", new Date())
.add("authorities", authoritiesAdminAndUser)
.get()
);
usersCollection.insert(BasicDBObjectBuilder.start()
.add("_id", "user-3")
.add("login", "user")
.add("password", "$2a$10$VEjxo0jq2YG9Rbk2HmX9S.k1uZBGYUHdUcid3g/vfiEl7lwWgOH/K")
.add("first_name", "")
.add("last_name", "User")
.add("email", "user@localhost")
.add("activated", "true")
.add("lang_key", "en")
.add("created_by", "system")
.add("created_date", new Date())
.add("authorities", authoritiesUser)
.get()
);
}
@ChangeSet(author = "initiator", id = "03-addSocialUserConnection", order = "03")
public void addSocialUserConnection(DB db) {
DBCollection socialUserConnectionCollection = db.getCollection("jhi_social_user_connection");
socialUserConnectionCollection.createIndex(BasicDBObjectBuilder
.start("user_id", 1)
.add("provider_id", 1)
.add("provider_user_id", 1)
.get(),
"user-prov-provusr-idx", true);
}
}
Run Code Online (Sandbox Code Playgroud)
在DatabaseConfiguration.java文件中删除 mongeez 并添加
@Bean
public Mongobee mongobee() {
log.debug("Configuring Mongobee");
Mongobee mongobee = new Mongobee(mongo);
mongobee.setDbName(mongoProperties.getDatabase());
mongobee.setChangeLogsScanPackage(
"de.shaere.sharecore.config.dbmigrations"); // package to scan for changesets
mongobee.setEnabled(true);
return mongobee;
}
Run Code Online (Sandbox Code Playgroud)
最后更新你的 gradle 文件,删除 mongeez 依赖项并添加:
compile group: 'com.github.mongobee', name: 'mongobee', version: mongobee_version
Run Code Online (Sandbox Code Playgroud)
我还打开了一个拉取请求来更新 JHipster 生成器。现在我们等着看大家是否同意:)
| 归档时间: |
|
| 查看次数: |
1104 次 |
| 最近记录: |