【问题标题】:How to acces mongorestore/mongodump in docker image如何在 docker 镜像中访问 mongorestore/mongodump
【发布时间】:2016-12-07 09:41:15
【问题描述】:

我正在尝试从通过 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”命令的任何建议?

【问题讨论】:

  • 请问您是否想在您的节点 docker 容器中运行 mongodump 和 mongorestore,因为它们将在生产环境中运行?还是只是为了测试,设置测试数据?
  • 仅用于测试和设置数据。
  • 如果您在生产中不需要它们,那么也许您也不应该将它们放在容器中进行测试。值得研究 using a separate container for seeding your data,或者看看您是否可以使用标准 mongo 调用删除/创建测试数据。

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


【解决方案1】:

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

【讨论】:

【解决方案2】:

如果您只需要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 可以在MongoDB download site 找到/创建

【讨论】:

    猜你喜欢
    • 2020-05-29
    • 2021-06-29
    • 2020-05-30
    • 1970-01-01
    • 2022-10-15
    • 2019-12-26
    • 2019-10-17
    • 2019-04-10
    • 2020-11-25
    相关资源
    最近更新 更多