【问题标题】:Docker Containers Java Spring MVC and MongoDbDocker 容器 Java Spring MVC 和 MongoDb
【发布时间】:2015-04-21 12:51:39
【问题描述】:

我创建了两个 docker 容器,一个运行 MongodDb,一个在 Tomcat 8 上运行 Java Spring MVC。我已经成功链接了这些容器,但我无法理解的是如何在一个容器中配置 Java Web 应用程序以与 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" />

当我在我的网络容器中运行 env 时,我得到了

CON1MDB_PORT_27017_TCP_ADDR=172.17.0.10

CON1MDB_PORT_27017_TCP=tcp://172.17.0.10:27017

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

任何帮助将不胜感激

【问题讨论】:

  • applicationContext.xml 设置为

标签: mongodb spring-mvc containers boot2docker dockerfile


【解决方案1】:

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

如果你运行:

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

并检查 tomcat 容器中的 /etc/hosts,您会看到如下内容:

172.17.0.2  database 0e504e1d7f79 mongodb

在上述情况下,您应该设置 host=database

【讨论】:

    猜你喜欢
    • 2017-11-10
    • 1970-01-01
    • 2018-09-17
    • 2019-10-05
    • 2019-02-24
    • 2022-01-09
    • 2022-11-01
    • 1970-01-01
    相关资源
    最近更新 更多