如何从npm脚本中删除mongodb在docker容器中

时间:2019-05-08 15:39:25

标签: mongodb docker npm

出于测试目的,我正在docker容器中运行mongodb(v.4.0.9)。我希望能够运行一个npm脚本来删除数据库,以便能够将其他备份还原到数据库中。

关于mongodb tutorial在终端上执行类似的操作,这是可能的,但我没有任何成功。 db容器公开了端口27016。

"drop: mongo localhost:27016/databaseToDrop --eval db.dropDatabase()"

实际上,应该删除数据库,就像记录的here一样。

没有错误消息或类似的消息出现,也没有删除数据库。

有什么建议吗?谢谢。

1 个答案:

答案 0 :(得分:0)

您必须使用getSiblingDB才能使用--eval在另一个数据库上运行命令。以下npm脚本对我有用:

{
  "name": "docker-npm-mongo",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "docker-start": "docker start some-mongo || docker run --name some-mongo -d mongo:latest",
    "docker-create-db": "docker exec some-mongo mongo --eval db.getSiblingDB('mydb').user.insert({'name':'test'})",
    "docker-drop-db": "docker exec some-mongo mongo --eval db.getSiblingDB('mydb').dropDatabase();"
  },
  "author": "",
  "license": "ISC"
}

使用这些npm命令创建数据库

npm run docker-start
npm run docker-create-db

然后您可以通过执行以下操作来检查您的数据库是否存在

docker exec -ti some-mongo mongo
> show dbs

完成后,可以通过执行

删除数据库
npm run docker-drop-db

您必须使用此命令手动删除Docker容器。另外,这也可以作为单独的命令作为npm脚本的一部分。

docker rm -f some-mongo