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

How to acces mongorestore/mongodump in docker image

我正在尝试通过 gitlab-ci-multi运行ner 从 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 运行ner 上使用这张图片。

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

这不是最优雅的解决方案,但您始终可以在安装了 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 供你使用。

如果您只需要 mongodumpmongorestore(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 可以是 found/created 在 MongoDB download site