Far*_*had 6 java mongodb docker spring-boot docker-compose
我的 Web 应用程序无法连接到 MongoDB 容器
这是我的 application.yml
spring:
data:
mongodb:
uri: mongodb://mongo:27017
host: mongo
port: 27017
database: my-db-name
Run Code Online (Sandbox Code Playgroud)
这是我的 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
Run Code Online (Sandbox Code Playgroud)
这是为运行 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"]
Run Code Online (Sandbox Code Playgroud)
我什至无法使用这些选项构建应用程序,我收到此异常:
org.mongodb.driver.cluster: Exception in monitor thread while connecting to server mongo:27017
如果可能,请尝试使用 docker-compose 提供解决方案,谢谢
旧版答案
重要说明:
旧版本的 MongoDB 忽略 中的此配置application.properties,继续使用我添加的新解决方案
此解决方法用于忽略正常配置(uri 除外)的旧版本 spring 和 mongo
. 我有一个警告说这个属性无法解决,但希望它有效:)
dockerspring.data.mongodb.uri= mongodb://<your_mongodb_container_name>:27017/<name_of_your_db>
Run Code Online (Sandbox Code Playgroud)
mongodb 部分不可更改,但端口号之前的 mongo 实际上是您在 docker-compose 中指定的容器名称
弹簧启动解决方案
dockerspring.data.mongodb.uri= mongodb://<your_mongodb_container_name>:27017/<name_of_your_db>
Run Code Online (Sandbox Code Playgroud)
泊坞窗解决方案
在您的 Dockerfile 中添加此选项以执行 Java
ENTRYPOINT [“java”,”-Dspring.data.mongodb.uri=mongodb://mongo:27017/name_of_your_db”, “-Djava.security.egd=file:/dev/./urandom”,”-jar”,”/<name_of_your_app>.jar”]
Run Code Online (Sandbox Code Playgroud)
链接 Java 和 Mongo 容器 + 给它们命名
这是我最后的 docker-compose.yml,希望对你有帮助
spring:
data:
mongodb:
host: <mongo-db-container-name>
port: <mongo-db-port>
database: <database-name>
Run Code Online (Sandbox Code Playgroud)
仔细比较这个版本和问题中指定的版本
| 归档时间: |
|
| 查看次数: |
4594 次 |
| 最近记录: |