Для деплоя понадобится аккаунт на Render. Достаточно бесплатного тарифного плана, но в нём нет консоли в браузере, поэтому будет рассмотрено заполнение БД через локальное приложение.
Убедитесь, что вы используете одинаковый SECRET_KEY
при работе с одной БД из разных приложений.
- Из Dashboard нажмите + New -> PostgreSQL;
- Задайте имя и ближайший регион. Остальные поля можно оставить по умолчанию;
- Нажмите Create Database и дождитесь окончания процесса;
- В информации о БД, в разделе Info находятся Internal Database URL и External Database URL. Используйте их далее.
-
В локальном приложении укажите следующие переменные окружения в .env:
DATABASE_URL=<External Database URL> SECRET_KEY=<Секретный ключ для БД> GITHUB_AUTH_TOKEN=<Ваш Github токен> DB_ENGINE=<Должна быть пустой или отсутствовать>
Для получения
GITHUB_AUTH_TOKEN
см. INSTALLATION.md; -
Выполните команды:
make migrate make sync ARGS='--repo Hexlet/hexlet-friends'
Параметр
ARGS
может быть любым, согласно INSTALLATION.md; -
Дождитесь окончания процесса. Желательно после этого удалить значение
DATABASE_URL
, во избежание путаницы.
Теперь когда БД готова, можно деплоить само приложение.
-
Из Dashboard нажмите + New -> Web Service;
-
Выберите желаемый репозиторий. Если его нет в списке - убедитесь что вы подключили Github аккаунт (Connect account) и предоставили доступ к репозиторию (Configure account);
-
Заполните следующие параметры:
- Name: <Желаемое имя>
- Region: <Ближайший регион>
- Branch: <Ваша ветка с фичей>
- Root Directory: <Оставить по умолчанию>
- Runtime: Python 3
- Build Command:
make build-production
- Start Command:
make start-production
-
Нажмите Advanced и введите следующие переменные окружения:
DEBUG=FALSE SECRET_KEY=<Секретный ключ для БД> DATABASE_URL=<Internal Database URL> PYTHON_VERSION=<Желаемая версия Python> POETRY_VERSION=<Желаемая версия Poetry>
-
Нажмите Create Web Service и дождитесь окончания процесса. В информации о приложении вы найдёте адрес и логи. Всё готово.
Процесс скачивания исходных данных с репозиториев может занимать длительное время. Поэтому стоит сохранить эти данные в фикстуру, чтобы в будущем сразу применить их к БД. Это возможно как для локального SQLite, так и для удалённого PostgreSQL. Будет рассмотрено сохранение БД в JSON файл db_fixture.json (имя может быть любым) для последующего восстановления из него. Предполагается, что локальное приложение настроено для работы с БД и указаны переменные окружения:
SECRET_KEY
- Для SQLite добавочно
DB_ENGINE=SQLite
- Для PostgreSQL добавочно
DATABASE_URL
Выполните команду:
poetry run python manage.py dumpdata --indent 2 > db_fixture.json
Не забудьте применить миграции make migrate
перед записью фикстуры в БД.
Выполните команду:
poetry run python manage.py loaddata db_fixture.json