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