英文:
Connecting Spring boot Container to Mongo Container: java.net.UnknownHostException: mongo: System error?
问题
我已经创建了一个简单的Spring Boot Rest应用程序,并将其docker化,在我本地使用mongo时按预期工作。
然而,我现在尝试使用Docker Compose运行一个Mongo容器来连接,而不是使用我的本地主机。
Docker-compose up -d可以正常工作,但是当我尝试访问查询Mongo的端点时,出现以下错误:
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文件(名为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"
英文:
I have created a simple Spring Boot Rest Application that I have dockerized and is working as expected when I use mongo locally.
However I have now tried to use Docker Compose to run a Mongo container to connect to rather than my local host.
Docker-compose up -d works but when I try to hit my endpoint that queries Monogo I get:
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]
In my application.properties file I have:
spring.data.mongodb.uri=mongodb://mongo:27017/pokerStats
My Docker file for my spring boot app (called 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"]
My docker-compose.yml file:
version: "3"
services:
pokerStats:
image: pokerStats
ports:
- 8080:8080
depends_on:
- db
db:
image: mongo
volumes:
- ./database:/data
ports:
- "27017:27017"
答案1
得分: 2
属性文件指定了主机mongo,但是容器可以通过容器名称进行发现,该名称为db。要么需要更改属性以使用正确的名称,要么需要将容器名称更改为属性文件所期望的名称。
英文:
The properties file specifies the host mongo, but containers are discoverable via the container name, which is db.
Either the properties need to be changed to use the right name or the container name changed to what the properties file expects.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。


评论