gpt4 book ai didi

java - 从Spring App(docker-compose)在Mongodb连接上获取 “Exception opening socket”

转载 作者:行者123 更新时间:2023-12-02 21:33:50 24 4
gpt4 key购买 nike

即使我提供了应用程序属性,

spring.data.mongodb.host=api-database4
作为主机名,即docker-compose文件上MongoDB的容器名和主机名,Spring应用程序仍然无法连接到MongoDB实例。但是,我可以从MongoDB Compass连接到 localhost:27030 ,但不能连接到 mongodb:// api-database4:27030 / messagingServiceDb
我的docker-compose文件;
version: '3'

services:
messaging-api6:
container_name: 'messaging-api6'
build: ./messaging-api
restart: always
ports:
- 8085:8080
depends_on:
- api-database4
networks:
- shared-net

api-database4:
image: mongo
container_name: api-database4
hostname: api-database4
restart: always
ports:
- 27030:27017
networks:
- shared-net
command: mongod --bind_ip_all

networks:
shared-net:
driver: bridge
我的Spring应用程序的Docker文件是;
FROM openjdk:12-jdk-alpine
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
和我的application.properties是;
#Local MongoDB config
spring.data.mongodb.database=messagingServiceDb
spring.data.mongodb.port=27030
spring.data.mongodb.host=api-database4
整个代码可以看到 here
如何使我的Spring应用程序在Docker容器上创建与另一个Docker容器上的MongoDB实例的连接?
我已经尝试过对类似问题的解决方案并将其复制,但仍然会出现相同的错误。
Spring app's logs
编辑和解决方案:
我通过注释掉下面的配置解决了这个问题,
#Local MongoDB config
#spring.data.mongodb.database=messagingServiceDb
spring.data.mongodb.host=api-database4
spring.data.mongodb.port=27030

剩下的问题是,为什么?那是我尝试连接的正确端口。可能与配置顺序有关吗?

最佳答案

ports中的docker-compose指令将容器端口发布到主机计算机。容器在暴露的端口上相互通信。您可以测试一个容器是否可以使用netcat到达另一个容器。

docker exec -it messaging-api6 bash
> apt-get install netcat
> nc -z -v api-database4 27030
> nc -z -v api-database4 27017

关于java - 从Spring App(docker-compose)在Mongodb连接上获取 “Exception opening socket”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63906760/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com