4

我正在尝试从通过 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。我得到的错误是:

创建事务测试

连接到 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:找不到命令

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

关于如何从测试中访问“mongorestore”命令的任何建议?

4

2 回答 2

2

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

然后你可以拉这个图像而不是普通的节点图像,并且可以使用 mongo cli。

于 2016-12-07T10:55:34.847 回答
1

如果您只需要mongodumpand mongorestore(部分 mongodb 数据库工具),有稍微更优雅的解决方案,这会使图像略小......在我的情况下只有 8MB。

# MONGODB_DB_TOOLS_URL=https://fastdl.mongodb.org/tools/db/mongodb-database-tools-ubuntu1804-x86_64-100.5.0.deb
ARG MONGODB_DB_TOOLS_URL
ADD ${MONGODB_DB_TOOLS_URL} /mongodb-tools.deb
RUN apt install /mongodb-tools.deb
RUN rm /mongodb-tools.deb

MONGODB_DB_TOOLS_URL可以在MongoDB 下载站点找到/创建

于 2021-10-07T15:53:31.477 回答