Как получить доступ к mongorestore / mongodump в образе докера

Я пытаюсь получить доступ к командам mongorestore / mongodump из образа докера, который был запущен через gitlab-ci-multirunner.

Мой .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. Я получаю следующую ошибку:

Создать тесты транзакций

Подключено к MongoDB: mongodb: // mongo: 27017 / test-db {Ошибка: команда не удалась: mongorestore --port 27017 --drop / builds / project / repo / project / tests / testData / db / mongo / dump

/ bin / sh: 1: mongorestore: не найдено

Я даже пробовал запустить команду mongorestore с "docker run" в разделе скриптов:

- docker run --rm --link mongodb:mongo -v /root:/backup mongo bash -c ‘mongorestore /backup --host $MONGO_PORT_27017_TCP_ADDR’

Я получаю такую ​​ошибку:

/ bin / bash: строка 61: докер: команда не найдена

Я должен упомянуть, что я запускаю этот образ на общем docker runner, предоставляемом gitlab.

Есть какие-нибудь советы о том, как мне получить доступ к команде mongorestore из моего теста?


person Iulian Gheorghita    schedule 07.12.2016    source источник
comment
Могу я спросить, хотите ли вы запустить mongodump и mongorestore в контейнере докеров узла, потому что именно так они будут запускаться в производственной среде? Или это просто для тестов, настройка тестовых данных?   -  person Vince Bowdren    schedule 07.12.2016
comment
Просто для тестов и настройки данных.   -  person Iulian Gheorghita    schedule 08.12.2016
comment
Если они вам не нужны в продакшене, то, возможно, вам тоже не стоит иметь их в своем контейнере при тестировании. Стоит изучить использование отдельного контейнера для заполнения ваших данных или посмотреть, можно ли удалить / создать тестовые данные с помощью стандартных вызовов mongo.   -  person Vince Bowdren    schedule 08.12.2016


Ответы (1)


Не самое элегантное решение, но вы всегда можете создать свой собственный образ поверх node: 7.2.0 с установленным mongo, что позволит контейнеру выполнить mongodump / restore. Dockerfile для такого образа должен выглядеть так - FROM node:7.2.0 RUN apt-get update -y && \ apt-get install -y mongodb

Затем вы можете вытащить это изображение вместо обычного образа узла и получить в свое распоряжение mongo cli.

person Yaron Idan    schedule 07.12.2016
comment
Спасибо за ответ. Если кому-то еще интересно, чтобы иметь возможность использовать те же бегуны, что я использовал реестр Gitlab: about.gitlab.com/2016/05/23/gitlab-container-registry. - person Iulian Gheorghita; 07.12.2016