mongodb - 如何在docker镜像中访问mongorestore/mongodump

标签 mongodb docker gitlab-ci gitlab-ci-runner mongorestore

我正在尝试从通过 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

在我的测试中,我使用 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

我什至尝试在脚本部分使用“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: line 61: docker: command not found

我必须提到我正在 gitlab 提供的共享 docker runner 上运行这个图像。

关于如何从我的测试中访问“mongorestore”命令有什么建议吗?

最佳答案

这不是最优雅的解决方案,但您始终可以在安装了 mongo 的 node:7.2.0 之上创建自己的镜像,从而允许容器执行 mongodump/restore。此类图像的 Dockerfile 应如下所示 - 来自节点:7.2.0 运行 apt-get 更新-y &&\ apt-get install -y mongodb

然后您可以拉取此镜像而不是普通节点镜像,​​并使用 mongo cli。

关于mongodb - 如何在docker镜像中访问mongorestore/mongodump,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41014010/

相关文章:

javascript - 使用动态集合/模型进行并行查询

node.js - 如果抓取数百万个 URL 并将数据更新到 mongodb,那么 cron 作业服务器是否密集?

docker-compose 构建环境变量

python - 如何让 Python 进程使用所有 Docker 容器内存而不被杀死?

docker - GITLAB-CI 管道无法登录到不安全的注册表

continuous-integration - 向 GitLab 项目添加运行器部署 key 失败

mongodb - 2dsphere 与 2d 索引性能

mongodb - Mongo Group 和两个字段的总和

amazon-web-services - 您如何在 Elastic Beanstalk 应用程序中的 Docker 容器之间共享卷?

bash - 如何根据控制台输出中的文本使 GitLab 的 CI/CD 作业失败?