【发布时间】:2021-01-02 12:01:24
【问题描述】:
即使我提供了应用程序属性,
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。
如何让 docker 容器上的 spring 应用程序创建与另一个 docker 容器上的 MongoDB 实例的连接?
我已经尝试了类似问题的解决方案并复制了它们,它仍然给出了同样的错误。
编辑和解决方案:
我通过注释掉下面的配置解决了这个问题,
#Local MongoDB config
#spring.data.mongodb.database=messagingServiceDb
spring.data.mongodb.host=api-database4
spring.data.mongodb.port=27030
剩下的问题是,为什么?那是我尝试连接的正确端口。会不会和配置顺序有关?
【问题讨论】:
标签: java mongodb spring-boot docker docker-compose