简体   繁体   English

Spring-boot docker容器中的应用无法连接mongodb docker容器

[英]Spring-boot application in docker container is unable to connect to mongodb docker container

When I trying to run my spring-boot application on docker, it is not able to connect to the Mongodb container running in docker.当我尝试在 docker 上运行我的 spring-boot 应用程序时,它无法连接到在 docker 中运行的 Mongodb 容器。

Application.properties应用程序.properties

spring.data.mongodb.port=27017
spring.data.mongodb.host=localhost

Dockerfile for spring application Dockerfile 申请 spring

FROM openjdk
COPY target/*.jar app.jar
ENTRYPOINT ["java","-jar","/app.jar"]

docker-compose.yaml docker-compose.yaml

version: '3'
services:
  mongo:
    image: mongo:latest
    container_name: docker-mongo
    ports:
      - "27017:27017"
  wacaj_docker:
    image: wacaj
    depends_on:
      - mongo
    container_name: wacaj
    build: .
    ports:
      - "8080:8080"

I am able to connect to the mongodb container from my local system, but the spring-application container is not able to connect to mongo container.我可以从本地系统连接到 mongodb 容器,但是 spring-application 容器无法连接到 mongo 容器。 And also if I run the spring application in local it is able to connect to the mongo runneing in docker container.而且,如果我在本地运行 spring 应用程序,它能够连接到运行在 docker 容器中的 mongo。 I am unable to troubleshoot the problem.我无法解决问题。

I tried changing hostname to both servicename ie mongo and container name ie docker-mongo, but it is still not working.我尝试将主机名更改为服务名称(即 mongo)和容器名称(即 docker-mongo),但它仍然无法正常工作。

2023-01-07 08:50:03.146  INFO 1 --- [localhost:27017] org.mongodb.driver.cluster               : Exception in monitor thread while connecting to server localhost:27017
wacaj         | 
wacaj         | com.mongodb.MongoSocketOpenException: Exception opening socket
wacaj         |         at com.mongodb.internal.connection.SocketStream.open(SocketStream.java:70) ~[mongodb-driver-core-4.6.1.jar!/:na]
wacaj         |         at com.mongodb.internal.connection.InternalStreamConnection.open(InternalStreamConnection.java:180) ~[mongodb-driver-core-4.6.1.jar!/:na]
wacaj         |         at com.mongodb.internal.connection.DefaultServerMonitor$ServerMonitorRunnable.lookupServerDescription(DefaultServerMonitor.java:193) ~[mongodb-driver-core-4.6.1.jar!/:na]
wacaj         |         at com.mongodb.internal.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:157) ~[mongodb-driver-core-4.6.1.jar!/:na]
wacaj         |         at java.base/java.lang.Thread.run(Thread.java:833) ~[na:na]
wacaj         | Caused by: java.net.ConnectException: Connection refused
wacaj         |         at java.base/sun.nio.ch.Net.pollConnect(Native Method) ~[na:na]
wacaj         |         at java.base/sun.nio.ch.Net.pollConnectNow(Net.java:672) ~[na:na]
wacaj         |         at java.base/sun.nio.ch.NioSocketImpl.timedFinishConnect(NioSocketImpl.java:539) ~[na:na]
wacaj         |         at java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:594) ~[na:na]
wacaj         |         at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:327) ~[na:na]
wacaj         |         at java.base/java.net.Socket.connect(Socket.java:633) ~[na:na]
wacaj         |         at com.mongodb.internal.connection.SocketStreamHelper.initialize(SocketStreamHelper.java:107) ~[mongodb-driver-core-4.6.1.jar!/:na]
wacaj         |         at com.mongodb.internal.connection.SocketStream.initializeSocket(SocketStream.java:79) ~[mongodb-driver-core-4.6.1.jar!/:na]
wacaj         |         at com.mongodb.internal.connection.SocketStream.open(SocketStream.java:65) ~[mongodb-driver-core-4.6.1.jar!/:na]

You need to change the hostname:您需要更改主机名:

spring.data.mongodb.host=mongo

Docker makes every service in a docker compose setup available under its service name, in your case mongo and wacaj_docker . Docker 使 docker 组合设置中的每项服务都可以在其服务名称下使用,在您的情况下为mongowacaj_docker

Please refer to the docs for further details.请参阅文档以获取更多详细信息。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 在docker容器中重新部署spring-boot应用程序? - Redeploy spring-boot application in docker container? 将Spring Boot Docker容器连接到MongoDB Docker容器 - Connecting Spring Boot Docker container to MongoDB docker container 无法从 spring 启动 Z05B6053C41A2140AFD6FC3BE6Z 容器连接 mysql docker 容器 - not able to connect mysql docker container from spring boot docker container 无法将 spring 连接到 docker 容器中的 mysql 数据库 - unable to connect spring to mysql database in docker container Spring 启动应用程序无法连接到 mariadb(在 Docker 中) - Spring boot application unable to connect to mariadb (in Docker) 连接被拒绝:访问在Docker容器中运行的Spring Boot应用程序 - Connection refused: accessing a spring boot application running in docker container 无法从 postman 向我的 docker spring-boot 容器发送请求 - Can't send request from postman to my docker spring-boot container 在 Docker-Compose 中使用 Spring 无法连接到 MongoDB - Unable to connect to MongoDB using Spring Boot in Docker-Compose 如何在Spring Boot Docker容器中访问MySQL Docker容器 - how to access mysql docker container in spring boot docker container 如何从docker容器内的java / spring-boot项目运行python脚本(并接收输出)? - How to run python script (and receive output) from java/spring-boot project which is inside a docker container?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM