首页 > 解决方案 > 如何彻底销毁 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 容器?

标签: mongodbdockerdocker-composecontainers

解决方案


您需要删除数据目录,然后销毁并重新创建数据库容器。

docker-compose down
rm -rf ./data/db
docker-compose up -d database

注意:您不需要该--build标志,因为您在 docker-compose 文件中引用了预构建映像。您也不需要指定database服务,除非您的撰写文件中有其他条目没有添加到示例中。你也不需要docker system prune.


推荐阅读