簡體   English   中英

如何在 docker 映像中訪問 mongorestore/mongodump

[英]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。

如果您只需要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 下載站點找到/創建

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM