为何mongoexport未生成输出文件?Docker环境导出问题咨询
问题分析与解决
你的问题出在路径的作用范围上:用docker exec执行的命令是在MongoDB容器内部运行的,所以--out指定的/var/www/myTest/output.json是容器内部的路径,不是你宿主机上的路径。你用FileZilla查看的是宿主机的目录,自然看不到文件。
解决步骤
1. 验证容器内是否存在导出文件
先执行下面的命令,确认容器里确实生成了文件:
docker exec mongodb ls /var/www/myTest/output.json
如果返回文件名,说明文件在容器内没问题。
2. 将容器内的文件复制到宿主机
用docker cp命令把容器里的文件拷贝到宿主机的目标目录:
docker cp mongodb:/var/www/myTest/output.json /var/www/myTest/
执行完后再用FileZilla查看宿主机的/var/www/myTest,就能看到文件了。
3. 长期解决方案(直接导出到宿主机)
下次导出时,提前把宿主机的目录挂载到MongoDB容器里,这样导出命令可以直接把文件写到宿主机。
如果容器还没启动,启动时添加挂载参数:
docker run -d -v /var/www/myTest:/mnt/myTest --name mongodb mongo:xxx
(把mongo:xxx换成你实际使用的镜像标签)
如果容器已经在运行,先停止容器,再重新启动并挂载目录(注意备份数据):
docker stop mongodb docker rm mongodb docker run -d -v /var/www/myTest:/mnt/myTest --name mongodb mongo:xxx
之后执行导出命令时,把--out指定为容器内的挂载路径:
docker exec mongodb mongoexport --port 27017 -u "username" -p "password" --authenticationDatabase "admin" -d databaseName -c user --out /mnt/myTest/output.json
这样文件会直接生成在宿主机的/var/www/myTest目录下。
内容的提问来源于stack exchange,提问作者user1419243
相关产品推荐
相关产品推荐

