我正在尝试创建一个带有预填充数据的停靠的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容器并使用来自本地计算机的数据填充它的正确方式是什么?
发布于 2019-09-23 08:39:15
我希望这种方法能有所帮助。使用docker-compose设置您的容器,您可以创建mongodb容器,并使用另一个运行import命令的容器进行导入,如下所示:
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容器仍然存在。
干杯
https://stackoverflow.com/questions/56357456
复制相似问题