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

标签 java mongodb spring-boot docker docker-compose

我创建了一个简单的 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

我的 Spring Boot 应用程序的 Docker 文件(称为 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"

最佳答案

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

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

关于java - 将 Spring boot 容器连接到 Mongo 容器 : java.net.UnknownHostException : mongo: System error?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61069384/

相关文章:

java - 如何从 fragment 中的后台线程更新 UI

java - sql查询-使用AND

spring - SpringBoot-微服务的Docker化+ Angular + MySQL + RabbitMQ

java - SQL 错误 : 0, SQLState:空

mongodb - 撤消mongodb中的删除操作

javascript - 无法找到带有查询字符串参数的文档

mongodb - 获取数组的第一个元素,如果数组为空,则不获取任何内容

Spring Boot Web-在 Jackson 中将 FAIL_ON_UNKNOWN_PROPERTIES 设置为 false

java - 将redis与spring boot集成

java - Mockito @Before 方法在 @PostConstruct 之后调用