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