Mongodb 如何在docker映像中访问mongorestore/mongodump
我试图从通过gitlab ci multirunner运行的docker映像中访问mongorestore/mongodump命令 My.gitlab-ci.yml看起来像这样:Mongodb 如何在docker映像中访问mongorestore/mongodump,mongodb,docker,gitlab-ci,gitlab-ci-runner,mongorestore,Mongodb,Docker,Gitlab Ci,Gitlab Ci Runner,Mongorestore,我试图从通过gitlab ci multirunner运行的docker映像中访问mongorestore/mongodump命令 My.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_t
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--端口27017--丢弃
/构建/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:未找到命令
我必须提到,我正在gitlab提供的共享docker runner上运行此映像
关于如何从测试中访问“mongorestore”命令,有什么建议吗?这不是最优雅的解决方案,但您可以始终在安装了mongo的节点7.2.0上创建自己的映像,从而允许容器执行mongodump/restore。此类映像的Dockerfile应该是这样的-
从节点:7.2.0
运行apt get update-y&&\
apt get安装-y mongodb
然后,您可以拉取此映像而不是普通节点映像,并让mongo cli供您使用。谢谢您的回答。如果其他人感兴趣,可以使用与我使用的Gitlab registry相同的运行程序:。我是否可以问您是否要在node docker容器中运行mongodump和mongorestore,因为这就是它们的运行方式n在生产中?或者只是为了测试,设置测试数据?只是为了测试和设置数据。如果在生产中不需要它们,那么在测试中可能也不应该将它们放在容器中。值得一看,或者看看是否可以使用标准mongo调用删除/创建测试数据。