[英]Getting “Exception opening socket” on Mongodb connection from Spring App (docker-compose)
即使我在應用程序屬性中給出,
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
整個代碼可以在這里看到。
如何讓我的 docker 容器上的 spring 應用程序創建到另一個 docker 容器上的 MongoDB 實例的連接?
我已經嘗試過類似問題的解決方案並復制它們,它仍然給出相同的錯誤。
編輯和解決方案:
我通過注釋掉下面的配置解決了這個問題,
#Local MongoDB config
#spring.data.mongodb.database=messagingServiceDb
spring.data.mongodb.host=api-database4
spring.data.mongodb.port=27030
剩下的問題是,為什么? 那是我嘗試連接的正確端口。 會不會跟配置順序有關?
docker-compose
ports
指令將容器端口發布到主機。 容器在暴露的端口上相互通信。 您可以使用 netcat 測試一個容器是否可以訪問另一個容器。
docker exec -it messaging-api6 bash
> apt-get install netcat
> nc -z -v api-database4 27030
> nc -z -v api-database4 27017
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.