如何通过Docker执行命令将Django应用数据保存到本地机器
解决Docker容器内Django数据导出到本地的问题
你的命令之所以把文件存在容器里,是因为>重定向是在容器内部的bash进程里执行的,所以生成的data.json会留在容器中。下面给你几种可行的解决办法:
方法一:直接在宿主机完成重定向(最简便)
把重定向操作放到宿主机的shell环境中,让输出直接写入本地磁盘:
docker exec -it app python manage.py dumpdata > ./data.json
这样执行后,dumpdata的输出会直接被宿主机捕获,保存到当前目录下的data.json文件里。
方法二:先导出到容器再复制到本地
如果已经在容器里生成了data.json,可以用docker cp命令把文件复制出来:
# 先确认容器内文件路径,比如在/app目录下 docker cp app:/app/data.json ./data.json
替换/app/data.json为你容器内实际的文件路径即可。
方法三:挂载本地目录到容器(长期方案)
如果需要频繁导出数据,可以在启动容器时挂载本地目录到容器内部,这样导出的文件会直接同步到本地:
# 启动容器时挂载本地当前目录到容器的/export目录 docker run -d -v $(pwd):/export --name app your-django-image
之后在容器内导出数据时,指定路径为挂载的目录:
docker exec -it app python manage.py dumpdata > /export/data.json
本地当前目录下就会直接生成data.json文件。
内容的提问来源于stack exchange,提问作者cristian
相关产品推荐
相关产品推荐

