Docker:将Spring Boot容器与Mongo DB容器链接 [英] Docker: Linking Spring Boot container with Mongo DB container

查看:69
本文介绍了Docker:将Spring Boot容器与Mongo DB容器链接的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何将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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆