首页 > 解决方案 > 来自 docker 容器的 Django loaddata 命令

问题描述

我有一个 django 应用程序,我把它放在一个 docker 容器中进行部署。我有一些初始数据,我想通过dumpdataandloaddata命令加载到数据库中。初始数据位于我的本地硬盘驱动器上。我选择了一种非常幼稚的方法,只是简单地将data_backup.json文件通过scp.

现在,我想通过执行以下命令加载 data_backup.json 文件(该文件位于服务器上,而不是 docker 容器中):

sudo docker-compose exec restapi python manage.py loaddata --settings=rest.settings.production ./data_backup_20191004.json

但是 Django 只在内部目录中搜索固定装置。

我正在寻找一种使用 docker 容器内的 data_backup.json 文件填充数据库的方法。有人可以帮忙吗?

最终,我正在寻找一种将数据直接转储到 S3 并在需要时从那里加载(用于数据库备份)的方法。如果您对如何实现这一点有任何提示,这也将非常有帮助 - 我似乎无法找到相关材料。

标签: djangodocker

解决方案


以防万一将来有人有这个问题。可以从标准输入加载数据。因此,您可以只获取备份文件并将其通过管道传输到数据库中(在容器中使用如下命令:

cat <<fixture_name.json>> | sudo docker exec -i <<container_name_or_id>> python manage.py loaddata --format=json -

最后一个破折号告诉 django 你想从标准输入加载数据。

文档


推荐阅读