【发布时间】:2019-12-03 23:06:29
【问题描述】:
我正在使用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 容器?
【问题讨论】:
-
您将实际数据存储在主机上的
./data/db中;你对那个目录做了什么吗? -
暂时没有,但即使我删除了那个文件夹,我仍然可以看到这些收藏
-
尝试删除文件夹,然后执行 docker-compose up -d --force-recreate。如果这没有帮助,您可以尝试 docker-compose down。任何属于 compose 项目的匿名或命名卷都将与它一起被销毁。
-
我假设您不想通过
docker system prune -a -f --volumes修剪 mongo-init.js? -
如果您在删除数据文件夹后仍然看到集合,那么您认为您正在使用的数据文件夹不是实际使用的文件夹。
标签: mongodb docker docker-compose containers