mongodb - 在 MongoDB docker-compose.yml 中保存数据的正确方法
问题描述
我一直在阅读一些博客文章和答案,以找到一种将数据保存在 MongoDB 容器中的方法,即使在删除和重建之后也是如此。
以下是我的做法,但我担心即使这样做也会丢失所有数据,所以我无法实际测试它。这是正确的方法吗?即使我一次又一次地做类似的事情,这会保留我的数据docker system prune
吗docker-compose build
?
# Docker Compose
version: '3.7'
services:
frontend:
container_name: frontend
build:
context: frontend
dockerfile: Dockerfile
ports:
- "80:80"
backend:
build: ./backend
ports:
- "5000:5000"
links:
- db
db:
image: mongo:latest
ports:
- "27017:27017"
volumes:
- data-volume:/data/db <------- added this part
提前致谢。
解决方案
您所做的将在容器重新启动和修剪之间保留数据。仅当您明确删除所有卷或修剪卷时,才会删除该卷。
version: '3.7'
services:
frontend:
container_name: frontend
build:
context: frontend
dockerfile: Dockerfile
ports:
- "80:80"
backend:
build: ./backend
ports:
- "5000:5000"
links:
- db
db:
image: mongo:latest
ports:
- "27017:27017"
volumes:
- data-volume:/data/db
volumes:
data-volume:
name: db-data
确保明确给出卷名,否则您会发现自己在实验期间创建了多个匿名卷。
推荐阅读
- mongodb - 按 $month 聚合和分组 mongodb 嵌套数据:
- c# - 重新导入我的项目,所有脚本和地形都消失了,我该如何解决这个问题?
- linux - 如何将 Linux 的查找、转换和复制命令合二为一
- android - Android 数据库测试 - 使用 Room.inMemoryDatabaseBuilder() 通过了与 Room.databaseBuilder() 完全相同的测试
- javascript - Chrome.Browser.Extension 错误:未捕获的 TypeError 和未检查的 runtime.lastError:
- grafana - InfluxQL/Grafana:每天获得最大值
- firebase - 如何检测firebase auth现在正在尝试登录用户?
- tkinter - 将 tkinter 小部件导入另一个文件
- angular - 赛普拉斯使用正则表达式检索 id 中具有匹配文本的元素
- ios - 如何更改基于 UISwitch 的 segue?