Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 如何在docker映像中访问mongorestore/mongodump_Mongodb_Docker_Gitlab Ci_Gitlab Ci Runner_Mongorestore - Fatal编程技术网

Mongodb 如何在docker映像中访问mongorestore/mongodump

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

我试图从通过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_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调用删除/创建测试数据。