我的目的是将Django应用(运行在Docker容器中)的数据直接转储到磁盘上,而不是转储到容器中。有什么想法吗?我尝试了以下方法:
docker exec -it app bash -c "python manage.py dumpdata > data.json"
而是将数据保存在容器内。
xv8emn3q1#
首先,使用-v option运行容器:
docker run -v $(pwd):/data-out <app-image>
这将把你的当前目录(pwd)Map到容器的/data-out目录(如果这个目录不存在,它将在容器内创建)。如果你愿意,你可以把$(pwd)修改为/something/else。
/data-out
$(pwd)
/something/else
第二个,执行您的命令:
docker exec -it app bash -c "python manage.py dumpdata > /data-out/data.json"
请注意,输出将转到data-out目录。
data-out
最后,在本地查看您的文件:
cat data.json
myzjeezk2#
重定向docker命令(而非python)的输出。
docker
python
docker exec -it app bash -c "python manage.py dumpdata" > data.json
UPD:如果manage.py在工作目录中,则还可以省略bash调用:
manage.py
bash
docker exec -it app python manage.py dumpdata > data.json
oyt4ldly3#
您可以在docker run命令中使用volume参数:
docker run -v /app/logs:/app/logs ...
参考:https://docs.docker.com/engine/reference/commandline/run/#volume
o4hqfura4#
您可以在运行Docker run时使用卷
docker exec -it app bash -c "python manage.py dumpdata > /data/data.json" -v $pwd:/data
4条答案
按热度按时间xv8emn3q1#
首先,使用-v option运行容器:
这将把你的当前目录(pwd)Map到容器的
/data-out
目录(如果这个目录不存在,它将在容器内创建)。如果你愿意,你可以把$(pwd)
修改为/something/else
。第二个,执行您的命令:
请注意,输出将转到
data-out
目录。最后,在本地查看您的文件:
myzjeezk2#
重定向
docker
命令(而非python
)的输出。UPD:如果
manage.py
在工作目录中,则还可以省略bash
调用:oyt4ldly3#
您可以在docker run命令中使用volume参数:
参考:https://docs.docker.com/engine/reference/commandline/run/#volume
o4hqfura4#
您可以在运行Docker run时使用卷