Я пытаюсь получить доступ к командам mongorestore/mongodump из образа докера, который был запущен через gitlab-ci-multirunner.Как получить доступ к mongorestore/mongodump в докере image
Мой .gitlab-ci.yml выглядит примерно так:
image: node:7.2.0
cache:
key: "$CI_BUILD_REF_NAME"
paths:
- node_modules/
services:
- mongo
variables:
DOCKER_ENV: 'true'
NODE_ENV: 'test'
all_tests:
script:
- npm install
- npm install tsd -g
- tsd install --save
- node_modules/typescript/bin/tsc -p .
- node node_modules/mocha/bin/_mocha --recursive tests --timeout 15000
В моих тестах я mongodump/mongorestore. Ошибки я получаю:
Create Transaction Tests
Connected to MongoDB: mongodb://mongo:27017/test-db { Error: Command failed: mongorestore --port 27017 --drop /builds/project/repo/project/tests/testData/db/mongo/dump
/bin/sh: 1: mongorestore: not found
Я даже попытался запустить команду mongorestore с "Docker запуска" в разделе скриптов:
- docker run --rm --link mongodb:mongo -v /root:/backup mongo bash -c ‘mongorestore /backup --host $MONGO_PORT_27017_TCP_ADDR’
Я получаю эту ошибку:
/bin/bash: line 61: docker: command not found
Я должен упомянуть, что я запускаю этот образ на общем docker runner, предоставляемом gitlab.
Любые советы о том, как я могу получить доступ к команде «mongorestore» из моего теста?
Могу ли я спросить, хотите ли вы запустить mongodump и mongorestore в своем контейнере докеров-узлов, потому что именно так они будут запускаться на производстве? Или это просто для тестов, настройка тестовых данных? –
Просто для тестирования и настройки данных. –
Если вы не нуждаетесь в них в производстве, то, возможно, вам также не придется иметь их в контейнере при тестировании. Стоит изучить [использование отдельного контейнера для посева ваших данных] (http://stackoverflow.com/a/33397913) или посмотреть, можете ли вы сбросить/создать тестовые данные, используя стандартные вызовы mongo. –