[英]How to acces mongorestore/mongodump in docker image
我正在嘗試從通過 gitlab-ci-multirunner 運行的 docker 映像中訪問 mongorestore/mongodump 命令。
My.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 運行器上運行此映像。
關於如何從測試中訪問“mongorestore”命令的任何建議?
不是最優雅的解決方案,但您始終可以在節點上創建自己的映像:7.2.0已安裝mongo,從而允許容器執行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
可以在MongoDB 下載站點找到/創建
FROM node:16.8.0-alpine
RUN echo 'http://dl-cdn.alpinelinux.org/alpine/v3.6/main' >> /etc/apk/repositories
RUN echo 'http://dl-cdn.alpinelinux.org/alpine/v3.6/community' >> /etc/apk/repositories
RUN apk update
RUN apk add mongodb-tools
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.