【问题标题】:How to I fill a dockerized MongoDB with local data?如何用本地数据填充 dockerized MongoDB?
【发布时间】:2019-10-14 21:10:33
【问题描述】:

我正在尝试使用预填充数据创建一个 dockerized MongoDB。这是我用来运行容器的命令:

sudo docker run -d -p 27017:27017 --network test-bridge --name test-mongo -v ~/db-backup:/data/db mongo

很遗憾,来自 ~/db-backup 的数据在容器内不可用。我尝试使用mongorestore,但我无法以这种方式访问​​容器。

创建 MongoDB docker 容器并用来自本地机器的数据填充它的正确方法是什么?

【问题讨论】:

标签: mongodb docker docker-volume


【解决方案1】:

我希望这种方法有所帮助。使用 docker-compose 设置您的容器,您可以创建一个 mongodb 并使用另一个运行导入命令的容器进行导入,如下所示:

  mongo:
    image: mongo
    container_name: mongodb_3.6
    hostname: mongo
    restart: always
    ports:
         - "27017:27017"
    networks:
      - labnet
    extra_hosts:
      - "locallab:127.0.0.1"

  mongo-import:
    image: mongo
    container_name: mongodb_3.6_import
    hostname: mongo-import
    depends_on:
      - mongo
    networks:
      - labnet
    extra_hosts:
      - "locallab:127.0.0.1"
    volumes:
      - ./workspace:/tmp/workspace
    command: >
      bash -c " chmod +x /tmp/workspace/scripts/import.sh && /tmp/workspace/scripts/import.sh"

在您的工作区/脚本文件夹中有 import.sh 脚本:

#!/bin/bash
for file in /tmp/workspace/data/*.json; do
  echo "Inserting file " $file
  mongoimport --host mongo --db dbName --collection collectionName --type json --file $file --jsonArray
done

如果您在 .json 文件中有数组格式的文档,则可以导入文档数组。

mongo-import 容器在完成工作后存在。

干杯

【讨论】:

    猜你喜欢
    • 2021-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-25
    • 1970-01-01
    • 1970-01-01
    • 2014-04-10
    相关资源
    最近更新 更多