如何访问 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 供你使用。
如果您只需要 mongodump
和 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
可以是 found/created 在 MongoDB download site
我正在尝试通过 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 供你使用。
如果您只需要 mongodump
和 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
可以是 found/created 在 MongoDB download site