java如何在Spring Boot Docked应用程序中连接到特定的本地MongoDB实例?
我开发了简单的Spring启动应用程序,它使用MongoDB作为数据库执行CRUD操作。我已经在Docker中部署了该应用程序,但是在对存储在MongoDB中的任何项目执行get Request时,我得到了空值。Docker所需的一些文件如下:
Dockerfile:
VOLUME /tmp
ADD build/libs/Spring-Boot-MongoDB-0.0.1-SNAPSHOT.jar SpringMongoApp.jar
ENTRYPOINT ["java", "-Dspring.data.mongodb.uri=mongodb://mongo:27018/otp","-jar","/SpringMongoApp.jar"]
docker编写。yml:
version: "3"
services:
api-database:
image: mongo:3.2.4
container_name: "springboot-mongo-app"
ports:
- "27018:27017"
environment:
MONGO_INITDB_ROOT_DATABASE: otp
networks:
- test-network
api:
image: springboot-api
ports:
- "8080:8080"
depends_on:
- api-database
networks:
- test-network
networks:
test-network:
driver: bridge
应用程序。属性:
spring.data.mongodb.host=api-database
When I checked the MongoDb Docker container using container ID, it is automatically getting connected to test database but not to otp database which I have mentioned in environment section of docker-compose.yml file.
# 1 楼答案
我认为你应该使用
MONGO_INITDB_DATABASE
而不是MONGO_INITDB_ROOT_DATABASE
# 2 楼答案
问题是docker容器不是持久的,每次运行docker容器时,数据库都会被删除并重新创建
如果将
VOLUME
添加到持久化/data/db
,将获得所需的结果试试这个:
docker编写。yml:
注意:第一次,它将是空的数据库。如果创建集合、插入记录等。。。它将保存在
./data/db