YaMDb - это REST API для проекта по сбору отзывов пользователей на произведения в категориях "Книги", "Фильмы" и "Музыка". Пользователи оставляют к произведениям текстовые отзывы и выставляют произведению рейтинг (оценку в диапазоне от одного до десяти). Из множества оценок автоматически высчитывается средняя оценка произведения.
В проекте используются следующие основные пакеты:
- Python 3.7
- Django 3.0.5
- Django REST framework 3.11.0
- Djangorestframework-simplejwt 4.6.0
- Gunicorn 20.0.4
- Psycopg2-binary 2.8.5
- Docker 20.10.5
- Nginx 1.19.9
- PostgreSQL 12.6
Проект YaMDb развертывается в трёх docker-контейнерах с использованием WSGI-сервера Gunicorn и HTTP-сервера Nginx.
Для начала склонируйте репозиторий командой
git clone https://github.com/V-Holodov/infra_sp2.git
Создайте файл .env с переменными окружения для работы с базой данных:
DB_ENGINE=django.db.backends.postgresql # указываем, что работаем с postgresql
DB_NAME=postgres # имя базы данных
POSTGRES_USER=postgres # логин для подключения к базе данных
POSTGRES_PASSWORD=postgres # пароль для подключения к БД (установите свой)
DB_HOST=db # название сервиса (контейнера)
DB_PORT=5432 # порт для подключения к БД
Для запуска приложения выполните развертывание контейнеров в фоновом режиме командой:
docker-compose up -d --build
Для запуска миграций выполните команды:
docker-compose exec web python manage.py makemigrations
docker-compose exec web python manage.py migrate --noinput
Создать суперпользователя необходимо командой:
docker-compose exec web python manage.py createsuperuser
После этого необходимо собрать статику командой:
docker-compose exec web python manage.py collectstatic --no-input
Проверьте развертывание, перейдя по адресу: http://127.0.0.1/admin/
Для применения фикстур для заполнения базы начальными данными можно выполнить команду:
docker-compose exec web python manage.py loaddata fixtures.json
Документация API доступна по адресу http://127.0.0.1/redoc/
Проект подготовлен выпускником бэкенд-факультета Яндекс-Практикума Виталием Холодовым .