2015-04-21 35 views
0

我已经创建了两个docker容器,一个运行MongodDb,一个运行Tomcat 8上的Java Spring MVC。我已经成功链接了容器,但是我无法理解的是如何配置java web应用程序在一个容器中与另一个应用程序中的mongodb对话。Docker容器Java Spring MVC和MongoDb

连接字符串设置必须在java web应用程序中设置?

我的Java Spring MVC的应用程序具有以下applicationContext.xml设置

<mongo:mongo id="mongo" host="127.0.0.1" port="27017" /> 
<mongo:db-factory dbname="segmentation" /> 
    <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate"> 
     <constructor-arg name="mongoDbFactory" ref="mongoDbFactory" /> 
    </bean> 
<mongo:repositories base-package="com.qantas.repository" /> 

当我在Web容器中运行env,我得到

CON1MDB_PORT_27017_TCP_ADDR=172.17.0.10 

CON1MDB_PORT_27017_TCP=tcp://172.17.0.10:27017 

我的数据库容器运行,并且有,我可以访问数据从终端内,我的网络应用程序启动并运行。我只是无法连接到Web应用程序的数据库。

任何帮助,将不胜感激

+0

applicationContext.xml设置为 <蒙戈:DB-工厂DBNAME = “分割”​​/> \t <豆ID = “mongoTemplate” 类= “org.springframework.data.mongodb.core.MongoTemplate”> \t \t \t

回答

2

在你的applicationContext.xml 文件你需要将主机设置为主机= con1mdb(在当您使用--link标志您所提供的别名)。该数据库容器与服务器容器具有不同的IP,因此您不能使用localhost或127.0.0.1。

如果你运行:

docker run -d --name mongodb mongo 
docker run -d --name tomcatserver --link mongodb:database tomcat 

和检查/etc/hosts文件在tomcat容器,你会看到类似这样的:

172.17.0.2 database 0e504e1d7f79 mongodb 

在上述情况下,你应该设置主机=数据库