将 Spring boot Container 连接到 Mongo Container: java.net.UnknownHostException: mongo: System error?

Posted

技术标签:

【中文标题】将 Spring boot Container 连接到 Mongo Container: java.net.UnknownHostException: mongo: System error?【英文标题】:Connecting Spring boot Container to Mongo Container: java.net.UnknownHostException: mongo: System error? 【发布时间】:2020-07-19 00:24:26 【问题描述】:

我创建了一个简单的Spring Boot Rest 应用程序,我已经对其进行了 docker 化,并且当我在本地使用 mongo 时可以正常工作。

但是,我现在尝试使用Docker Compose 运行Mongo 容器来连接而不是我的本地主机。

Docker-compose up -d 有效,但是当我尝试访问查询 Monogo 的端点时,我得到:

Caused by: java.net.UnknownHostException: mongo: System error
    at java.base/java.net.Inet4AddressImpl.lookupAllHostAddr(Native Method) ~[na:na]
    at java.base/java.net.InetAddress$PlatformNameService.lookupAllHostAddr(Unknown Source) ~[na:na]
    at java.base/java.net.InetAddress.getAddressesFromNameService(Unknown Source) ~[na:na]
    at java.base/java.net.InetAddress$NameServiceAddresses.get(Unknown Source) ~[na:na]
    at java.base/java.net.InetAddress.getAllByName0(Unknown Source) ~[na:na]
    at java.base/java.net.InetAddress.getAllByName(Unknown Source) ~[na:na]
    at java.base/java.net.InetAddress.getAllByName(Unknown Source) ~[na:na]
    at com.mongodb.ServerAddress.getSocketAddresses(ServerAddress.java:203) ~[mongodb-driver-core-3.11.2.jar!/:na]

在我的 application.properties 文件中:

spring.data.mongodb.uri=mongodb://mongo:27017/pokerStats

我的 Docker file 用于我的 Spring Boot 应用程序(称为 pokerStats):

#
FROM adoptopenjdk/openjdk11:alpine-jre

#
ARG JAR_FILE=/build/libs/pokerStats-0.0.1-SNAPSHOT.jar

#
WORKDIR /opt/app

#
COPY $JAR_FILE app.jar

#
ENTRYPOINT ["java","-jar","app.jar"]

我的docker-compose.yml 文件:

version: "3"
services:
  pokerStats:
    image: pokerStats
    ports:
      - 8080:8080
    depends_on: 
      - db
  db:
    image: mongo
    volumes:
      - ./database:/data
    ports:
      - "27017:27017"

【问题讨论】:

【参考方案1】:

属性文件指定主机mongo,但可以通过容器名称发现容器,即db

要么需要更改属性以使用正确的名称,要么将容器名称更改为属性文件所期望的名称。

【讨论】:

以上是关于将 Spring boot Container 连接到 Mongo Container: java.net.UnknownHostException: mongo: System error?的主要内容,如果未能解决你的问题,请参考以下文章

无法将 dockerized spring boot 应用程序连接到 dockerized postgresql

Spring Boot 应用程序无法连接到 mariadb(在 Docker 中)

Spring Boot + docker +mongo

将 Spring-Boot 连接到 MySQL

无法将mysql连接到spring boot项目

无法将 spring-boot 2 服务连接到不同容器中的 mysql