如何访问docker图像中的mongorestore / mongodump

我试图从已经通过gitlab-ci-multirunner运行的docker镜像中访问mongorestore / mongodump命令。

我的.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 

在我的testing中,我做了mongodump / mongorestore。 我得到的错误是:

创build交易testing

连接到MongoDB:mongodb:// mongo:27017 / test-db {错误:命令失败:mongorestore –port 27017 –drop / builds / project / repo / project / tests / testData / db / mongo / dump

/ bin / sh:1:mongorestore:找不到

我甚至尝试在脚本部分使用“docker run”运行mongorestore命令:

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

我得到这个错误:

/ bin / bash:第61行:docker:command not found

我不得不提到,我在gitlab提供的一个共享docker runner上运行这个镜像。

有关如何从我的testing中访问“mongorestore”命令的任何build议?

不是最优雅的解决scheme,但你总是可以在节点顶部创build自己的图像:安装了mongo的7.2.0,从而允许容器执行mongodump / restore。 这样的图像的Dockerfile应该看起来像这样 – FROM node:7.2.0 RUN apt-get update -y && \ apt-get install -y mongodb

然后,你可以拉这个图像,而不是正常的节点图像,并有mongo cli在您的处置。