【发布时间】:2020-04-07 09:08:24
【问题描述】:
我的网络应用无法连接到 MongoDB 容器
这是我的 application.yml
spring:
data:
mongodb:
uri: mongodb://mongo:27017
host: mongo
port: 27017
database: my-db-name
这是我的 Docker-Compose
version: "3"
services:
java:
build:
context: ./
ports:
- "8080:8080"
links:
- mongo
depends_on:
- mongo
networks:
- shared-net
mongo:
image: 'mongo'
ports:
- 27017:27017
hostname: mongo
volumes:
- ./data/db:/data/db
networks:
- shared-net
networks:
shared-net:
driver: bridge
这是为运行 java 编写的 Dockerfile
FROM openjdk:11
COPY ./code/lemon-backend/target/lemon-0.0.1-SNAPSHOT.jar /usr/src/
WORKDIR /usr/src/
EXPOSE 8080
CMD ["java", "-jar", "lemon-0.0.1-SNAPSHOT.jar"]
我什至无法使用这些选项构建应用程序 我得到了这个例外:
org.mongodb.driver.cluster: Exception in monitor thread while connecting to server mongo:27017
如果可能,请尝试使用 docker-compose 提供解决方案,谢谢
【问题讨论】:
-
这种情况的常见原因是应用程序在数据库完全准备好之前启动;而 Compose 将启动服务,以便它知道何时“准备好”。如果你再次运行
docker-compose up,一分钟左右可以工作吗? -
不,它不会。我什至尝试
docker-compose up -d db仅运行数据库并尝试稍后运行应用程序。 -
除此之外,我还有
depends_on属性,这使得数据库服务优先
标签: java mongodb spring-boot docker docker-compose