Как удалить mongodb в Docker-контейнер из скрипта npm - PullRequest
0 голосов
/ 08 мая 2019

Я запускаю mongodb (v.4.0.9) в контейнере Docker для тестирования. Я хочу иметь возможность запустить скрипт npm для удаления базы данных, чтобы иметь возможность восстановить другие резервные копии в базе данных.

Что касается учебника mongodb для выполнения подобных действий в терминале, это возможно, но безуспешно на моей стороне. Контейнер БД предоставляет порт 27016.

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

На самом деле база данных должна быть удалена, как описано здесь .

Нет сообщения об ошибке или что-то подобное, ни БД не будет сброшено.

Есть предложения? Спасибо.

1 Ответ

0 голосов
/ 09 мая 2019

Вы должны использовать 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...