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

时间:2019-05-29 09:37:15

标签: mongodb docker docker-volume

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

1 个答案:

答案 0 :(得分:0)

我希望这种方法能有所帮助。使用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容器后就存在。

欢呼

相关问题