Docker:将Spring Boot容器与Mongo DB容器链接 [英] Docker: Linking Spring Boot container with Mongo DB container
问题描述
如何将Spring Boot应用程序容器与MongoDB容器链接?
Spring Boot应用程序正在使用MongoDBRespository,默认情况下它连接到localhost:27017。
How can I link my Spring Boot application container with MongoDB container?
Spring Boot app is using MongoDBRespository which by default connects to localhost:27017.
推荐答案
我想知道您是否通过链接容器使它正常工作,但对我却不起作用,请尝试在我的Springboot应用程序中使用链接的容器别名作为dbhost名称。我没有尝试使用 MongoClientURI
。
I wonder if you got this to work by linking containers, it didn't work for me, tried using a linked container alias as a dbhost name in my Springboot app. I did not try it as MongoClientURI
though.
我确实选择了解决方法,使用了mongodb容器和spring应用程序容器,我必须将mongo容器主机和端口设置为春季应用容器,同时将应用容器创建为容器ENV变量,如下所示
I did opt a work around, with mongodb containers and spring apps containers, I had to set up mongo containers host and port to spring app containers while creating the apps containers as Containers ENV variables , as shown below
Mongo容器
docker run -d -p 27027:27017 -p 28027:28017 --name mongodb --volumes-from dbdata iamiddy/mongodb
SpringBoot Apps容器
SpringBoot Apps containers
docker run -d -p 8000:8080 --name AppDockerContainer
-e db.host.name=EC2-HOSTING-MONGO-CONTAINER
-e db.host.port=DB-HOST-PORT AppDockerImage
application.properties
db.host.port = 27017
db.host.name = localhost
application.properties
db.host.port=27017
db.host.name=localhost
MongoConfig
MongoConfig
public class MongoRepositoryConfig extends AbstractMongoConfiguration {
@Value("${db.host.port}")
private int port;
@Value("${db.host.name}")
private String host;
@Value("${db.name}")
private String dbname;
@Override
public Mongo mongo() throws Exception {
ServerAddress serverAdress = new ServerAddress(host,port);
Mongo mongo = new MongoClient(serverAdress);
mongo.setWriteConcern(WriteConcern.ACKNOWLEDGED);
return mongo;
}
public @Bean MongoTemplate mongoTemplate() throws Exception {
return new MongoTemplate(mongo(), getDatabaseName());
}
@Override
protected String getDatabaseName() {
return dbname;
}
}
这篇关于Docker:将Spring Boot容器与Mongo DB容器链接的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!