我如何用本地数据填充dockerized MongoDB?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我如何用本地数据填充dockerized MongoDB?相关的知识,希望对你有一定的参考价值。

我正在尝试创建带有预填充数据的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容器并用本地计算机中的数据填充它的正确方法是什么?

答案

我希望这种方法有帮助。使用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"

在workspace / scripts文件夹中具有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容器完成工作后存在。

欢呼声

以上是关于我如何用本地数据填充dockerized MongoDB?的主要内容,如果未能解决你的问题,请参考以下文章

高手 请我如何用批处理禁用本地连接啊

如何用同名节点的所有子节点填充 XmlNodeList?

如何用另一个视图填充主 ViewController 上的 UIView?

Firestore:我如何用documentID读取子收集数据?

我如何用 pafy 为进度条制作线程

看我如何用多线程,帮助运营小姐姐解决数据校对系统变慢!