发生异常错误:打开套接字(MongoDB、Docker)时出现异常

wqlqzqxt  于 2022-12-12  发布在  Go
关注(0)|答案(4)|浏览(281)

我尝试使用Docker映像启动我的应用程序(Sping Boot + Spring Cloud +Eureka + MongoDB),但无法连接到MongoDB。

例外状况:

exception "com.mongodb.MongoSocketOpenException: Exception opening socket."

我使用execute命令启动应用程序:* 扩充-组合-构建 *

Docker日志:

com.mongodb. MongoSocket0penException: Exception opening socket at com.mongodb. connection. SocketStream.open(SocketStream.java: 63) ~|mongo-java-driver-3.2.2.jar!/:naj
  at com. monsoob: connection. berettaberverwontortser/ersonito-kunnablearancerainitservertonitolnava:1203-dionso-java-driver*3?2.2.jarl/:nal
  at : java. lang. Thread.run (Thread. java: 745) Lna:1.8.0_111]
Caused by: java.net.ConnectException: Connection refused (Connection refused)
  at java.net.PlainSocketImpl.socketConnect (Native Method) ~ [na: 1.8.0_1111 at java.net.AbstractPlainSocketImp1.doConnect (AbstractplainSocketImpl.java:350) ~ [na: 1.8.0_111]
  at java.net.AbstractPlainSocketImp1.connectToAddress(AbstractPlainSocketImp1.java:206)~[na:1.8.0_1111 
  at java.net .AbstractPlainSocketImp1.connect (AbstractPlain5ocket Imp],java:188) ~[na:1.8.0_111]
  at java.net.SocksSocketImpl.connect (SocksSocketImpl.java:392) ~|na:1.8.0_111] java.net Socket. connect (Socket, java: 589) ~[na:1.8:0-111]
  at com.mongodb.connection. SocketStreamHelper.initialize(SocketStreamHelper. java: 50) ~ [mongo-java-driver-3.2.2.ar!/:na] at com. mongodb. connection. SocketStream.open(SocketStream. java:58) ~ [mongo-java-driver-3.2.2.jar!/:na]
3 common frames omitted

应用程序.yml:

# Spring properties
spring:
  application:
    name: car-service
  data:
    mongodb.host: localhost
    mongodb.port: 32769
    mongodb.uri: mongodb://localhost/test
    mongo.repositories.enabled: true

# Discovery Server Access
eureka:
    client:
      serviceUrl:
        defaultZone: http://localhost:8761/eureka/

# HTTP Server (Tomcat) Port
server: 
  port: 2220

error:
  whitelabel:
    enabled: false

停靠-撰写.yml:

eureka:
  build: ./eureka-discovery-service
  ports:
    - "8761:8761"

mongodb:
  image: mongo:3.0.4
  ports:
    - "32769:32769"

postgresql:
  image: postgres:9.6.1
  ports:
    - "32770:32770"

gateway-service:
  build: ./gateway-service
  ports:
    - "9090:9090"
  links:
    - eureka
  environment:
    SPRING_APPLICATION_NAME: gateway-service
    SPRING_PROFILES_ACTIVE: enableEureka
    EUREKA_INSTANCE_PREFER_IP_ADDRESS: "true"
    EUREKA_CLIENT_SERVICEURL_DEFAULTZONE: http://eureka:8761/eureka/

airplane-service:
  build: ./airplane-service
  ports:
    - "2222:2222"
  links:
    - eureka
    - postgresql
  environment:
    SPRING_APPLICATION_NAME: airplane-service
    SPRING_PROFILES_ACTIVE: enableEureka
    EUREKA_INSTANCE_PREFER_IP_ADDRESS: "true"
    EUREKA_CLIENT_SERVICEURL_DEFAULTZONE: http://eureka:8761/eureka/
    SPRING_SLEUTH_ENABLED: "true"
    SPRING_DATASOURCE_POSTGRESQL_URL: jdbc:postgresql://localhost:32770/postgres

car-service:
  build: ./car-service
  ports:
    - "2220:2220"
  links:
    - eureka
    - mongodb
  environment:
    SPRING_APPLICATION_NAME: car-service
    SPRING_PROFILES_ACTIVE: enableEureka
    EUREKA_INSTANCE_PREFER_IP_ADDRESS: "true"
    EUREKA_CLIENT_SERVICEURL_DEFAULTZONE: http://eureka:8761/eureka/
    SPRING_SLEUTH_ENABLED: "true"
    SPRING_DATA_MONGODB_URI: mongodb://localhost:32769/test

machine-service:
  build: ./machine-service
  ports:
    - "2224:2224"
  links:
    - eureka
  environment:
    SPRING_APPLICATION_NAME: machine-service
    SPRING_PROFILES_ACTIVE: enableEureka
    EUREKA_INSTANCE_PREFER_IP_ADDRESS: "true"
    EUREKA_CLIENT_SERVICEURL_DEFAULTZONE: http://eureka:8761/eureka/
    SPRING_SLEUTH_ENABLED: "true"

为什么我打开套接字时会出现异常?如何解决这个问题?

mpgws1up

mpgws1up1#

你在属性文件中将mongodb主机设置为localhost。在一个容器中localhost地址为本身,但是你的mongodb在运行汽车服务的容器(汽车服务)中不是。当你使用docker compose时,你可以用它的名字来寻址容器。在你的例子中,它是mongodb

aoyhnmkz

aoyhnmkz2#

为了澄清@barbakini答案,在应用程序中定义它。yaml用途:

spring.data.mongodb.host: mongodb
6uxekuva

6uxekuva3#

您的mongoDB服务未启动,
通过以下命令检查状态

sudo service mongodb status

sudo service mongodb start

希望它能正常工作,也可能有几个原因,比如你在应用程序中为mongodb服务定义的配置不正确,比如端口。

v09wglhw

v09wglhw4#

尝试添加
network_mode: host
及移去了
links: ....
对于所有的服务,想要连接mongo或Eureka 或postgresql,在你的docker-compose. yml.
通过这样做,您将连接到Docker localhost。

相关问题