Команда Django loaddata из контейнера Docker - PullRequest
0 голосов
/ 04 октября 2019

У меня есть приложение django, которое я помещаю в докер-контейнер для развертывания. У меня есть некоторые исходные данные, которые я хочу загрузить в базу данных с помощью команд dumpdata и loaddata. Исходные данные хранятся на моем локальном жестком диске. Я выбрал очень наивный подход и просто скопировал файл 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 ищет только внутренние каталогисветильники.

Я ищу способ заполнить базу данных файлом data_backup.json внутри контейнера докера. Может ли кто-нибудь помочь?

В конечном счете, я ищу способ выгрузки данных непосредственно в S3 и загрузки их оттуда, если это необходимо (для резервных копий БД). Если у вас есть какие-либо советы о том, как этого добиться, это также было бы очень полезно - мне кажется, я не могу найти материал по этому вопросу.

Ответы [ 2 ]

0 голосов
/ 04 октября 2019

На всякий случай, если у кого-то возникнет этот вопрос в будущем. Можно загрузить данные из стандартного ввода. Таким образом, вы можете просто взять файл резервной копии и направить его в базу данных (внутри контейнера с помощью команды, подобной этой:

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

Последняя черта сообщает django, что вы хотите загрузить данные из stdin.

DOCS

0 голосов
/ 04 октября 2019

Вы можете скопировать файл в контейнер докера перед выполнением команды с docker cp:

docker cp ./data_backup_20191004.json <container_id>:django_dir/data_backup_20191004.json

Или, если файл расположен на сервере S3, вы можете выполнить завиток внутри докераконтейнер и установить оттуда:

sudo docker-compose exec restapi curl http://s3.example.com/path/to/data.json > data.json
sudo docker-compose exec restapi python manage.py loaddata --settings=rest.settings.production ./data.json
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...