Проект создан в рамках учебного курса Яндекс.Практикум.
Проект YaMDb собирает отзывы пользователей на произведения (книги, фильмы и музыка). Произведению может быть присвоен жанр из списка предустановленных. Новые жанры может создавать только администратор. Пользователи оставляют к произведениям текстовые отзывы и ставят произведению оценку в диапазоне от одного до десяти (целое число). На основании оценок рассчитывается общий рейтинг произведения. На одно произведение пользователь может оставить только один отзыв.
Реализован REST API CRUD для моделей проекта, для аутентификации примненяется JWT-токен. В проекте реализованы пермишены, фильтрации, сортировки и поиск по запросам клиентов, реализована пагинация ответов от API, установлено ограничение количества запросов к API. Проект разворачивается в трех Docker контейнерах: web-приложение, postgresql-база данных и nginx-сервер.
Проект развернут на боевом сервере Yandex.Cloud. Реализовано CI и CD проекта. При пуше изменений в главную ветку проект автоматические тестируется на соотвествие требованиям PEP8 и проверяется внутренними автотестами. После успешного прохождения тестов, на git-платформе собирается образ web-контейнера Docker и автоматически размешается в облачном хранилище DockerHub. Размещенный образ автоматически разворачивается на боевом сервере вмете с контейнером веб-сервера nginx и базой данных PostgreSQL.
- Python 3.6+
- Docker
- Works on Linux, Windows, macOS, BS
- Python 3.8
- Django 2.2
- Django Rest Framework
- Simple-JWT
- PostreSQL
- Nginx
- gunicorn
- Docker
- DockerHub
- GitHub Actions (CI/CD)
- Клонировать репозиторий и перейти в него в командной строке:
git clone [email protected]:NikitaChalykh/API_YaMDb.git
cd yamdb_final
- Cоздать и открыть файл
.env
с переменными окружения:
cd infra
touch .env
- Заполнить
.env
файл с переменными окружения по примеру:
echo DB_ENGINE=django.db.backends.postgresql >> .env
echo DB_NAME=postgres l >> .env
echo POSTGRES_PASSWORD=postgres >> .env
echo POSTGRES_USER=postgres >> .env
echo DB_HOST=db >> .env
echo DB_PORT=5432 >> .env
- Установка и запуск приложения в контейнерах (контейнер web загружактся из DockerHub):
docker-compose up -d
- Запуск миграций, создание суперюзера, сбор статики и заполнение БД:
docker-compose exec web python manage.py migrate
docker-compose exec web python manage.py createsuperuser
docker-compose exec web python manage.py collectstatic --no-input
docker-compose exec web python manage.py loaddata fixtures.json
Документация для API после установки доступна по адресу
http://127.0.0.1/redoc/