mongodb - 如何彻底销毁 docker-compose 创建的 Mongo 数据库?
问题描述
我正在使用docker-compose
创建 MongoDB 服务。这是它的外观:
services:
database:
image: 'mongo'
environment:
- MONGO_DATA_DIR=/data/db
- MONGO_INITDB_DATABASE=azunyan
volumes:
- ./container-scripts/mongo-init.js:/docker-entrypoint-initdb.d/mongo-init.js
- ./data/db:/data/db
我使用它构建和运行服务sudo docker-compose up --build -d database
,这将创建 MongoDB 容器。
在测试期间,我通过连接到数据库mongo <container ip address>
并发出一些 mongo 命令(例如db.createCollection()
)向数据库添加了一些集合
之后,我使用sudo docker-compose down -v
移除容器,并且我也运行sudo docker system prune -a -f
以确保。我希望下次构建和运行映像时,数据库应该是空的(即没有集合),但是我可以看到集合仍然存在。为什么?如何获得干净的 MongoDB 容器?
解决方案
您需要删除数据目录,然后销毁并重新创建数据库容器。
docker-compose down
rm -rf ./data/db
docker-compose up -d database
注意:您不需要该--build
标志,因为您在 docker-compose 文件中引用了预构建映像。您也不需要指定database
服务,除非您的撰写文件中有其他条目没有添加到示例中。你也不需要docker system prune
.
推荐阅读
- flutter - Hiding widgets when the keyboard is active
- python - 当尝试执行 df.fillna() 但出现错误时
- android - 如何混淆预先构建的apk?
- python - Python中根据其他条件计算对应的时间间隔
- google-bigquery - BigQuery INSERT SELECT 导致记录的随机顺序?
- sql-server - 从同一个表中的两个日期范围获取数据 (MSSQL)
- python - python中的有限差分方法
- python - 如何使用 sklearn 和 numpy 获得预测的标签?
- c++ - 这个返回元素位置的基于循环的函数有什么问题?
- c# - 无法使用服务帐户通过 SMTP mailkit 和 Gmail API 发送消息