docker-编写如何持久化mongodb-数据库
docker-compose how to persist mongodb-database
我正在使用 docker-compose,这是我的 docker-compose.yaml
文件:
version: "3.7"
services:
node:
container_name: my-app
image: my-app
build:
context: ./my-app-directoty
dockerfile: Dockerfile
command: npm run dev
environment:
MONGO_URL: my-database
port: 3000
volumes:
- ./my-app-directory/src:/app/src
- ./my-app-directory/node_modules:/app/node_modules
ports:
- "3000:3000"
networks:
- my-app-network
depends_on:
- my-database
my-database:
container_name: my-database
image: mongo
ports:
- "27017:27017"
networks:
- my-app-network
networks:
my-app-network:
driver: bridge
我希望每次 运行 以下命令时都能找到一个清晰的新创建的数据库:
docker-compose build
docker-compose up
但事实并非如此。当我使用 docker-compose up
启动容器时,我的数据库具有上次使用 docker-compose down
命令关闭它时的确切状态。而且由于我没有在 my-database
对象中指定 volume
道具,这是正常行为吗?这是否意味着不需要其他操作来持久化数据库状态?如果我选择使用 docker-compose
,我可以在生产中使用它吗?
mongo 图像定义了以下卷:
/data/configdb
/data/db
因此 docker-volume
将为 data/db
创建并使用一个未命名的卷。
如果你想要一个新的,使用:
docker-compose down -v
docker-compose up -d --build
或者使用安装在卷位置的安装点,如:
volumes:
- ./db:/data/db:rw
并在您想重新开始时删除本地 db
目录。
我正在使用 docker-compose,这是我的 docker-compose.yaml
文件:
version: "3.7"
services:
node:
container_name: my-app
image: my-app
build:
context: ./my-app-directoty
dockerfile: Dockerfile
command: npm run dev
environment:
MONGO_URL: my-database
port: 3000
volumes:
- ./my-app-directory/src:/app/src
- ./my-app-directory/node_modules:/app/node_modules
ports:
- "3000:3000"
networks:
- my-app-network
depends_on:
- my-database
my-database:
container_name: my-database
image: mongo
ports:
- "27017:27017"
networks:
- my-app-network
networks:
my-app-network:
driver: bridge
我希望每次 运行 以下命令时都能找到一个清晰的新创建的数据库:
docker-compose build
docker-compose up
但事实并非如此。当我使用 docker-compose up
启动容器时,我的数据库具有上次使用 docker-compose down
命令关闭它时的确切状态。而且由于我没有在 my-database
对象中指定 volume
道具,这是正常行为吗?这是否意味着不需要其他操作来持久化数据库状态?如果我选择使用 docker-compose
,我可以在生产中使用它吗?
mongo 图像定义了以下卷:
/data/configdb
/data/db
因此 docker-volume
将为 data/db
创建并使用一个未命名的卷。
如果你想要一个新的,使用:
docker-compose down -v
docker-compose up -d --build
或者使用安装在卷位置的安装点,如:
volumes:
- ./db:/data/db:rw
并在您想重新开始时删除本地 db
目录。