Проект YaMDb собирает отзывы пользователей на произведения. Сами произведения в YaMDb не хранятся, здесь нельзя посмотреть фильм или послушать музыку.
- Зарегистрироваться
- Оставить отзыв и оценку на произведение
- Оставить комментарий к отзыву
- Многое другое
Проект упакован в Docker контейнеры.
Образ на DockerHub: niklukyan/api_yamdb:v2.0
Для подготовки .env файла необходимо заполнить все нужные переменные в файле шаблоне .env.template и выполнить команду:
cp infra/.env.template infra/.env
Клонировать репозиторий и перейти в папку infra в командной строке:
git clone https://github.com/niklukyan/infra_sp2.git
Чтобы постоянно не запускать команды docker с правами root, можно добавить пользователя в группу docker.
Сделать это очень просто с помощью команды:
sudo usermod -aG docker ${USER}
Команда отрабатывает без вывода успеха в консоль. И теперь, чтобы изменения вступили в силу нужно либо выйти и снова залогиниться на удаленный сервер, или в случае локальной «машины», достаточно выполнить команду:
su - ${USER}
Потребуется ввести пароль пользователя и вы получите новую сессию для пользователя.
Теперь если посмотреть в каких группах состоит текущий пользователь, то появится группа 998(docker) . Для этого достаточно выполнить команду:
id ${USER}
Запустить сборку контейнеров docker-compose:
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
Копировать заранее сохраненные фикстуры из папки data в папку infra c помощью команды:
cp data/fixtures.json infra/fixtures.json
Создать дамп (резервную копию) базы данных "fixtures.json" можно следующей командой:
docker-compose exec web python manage.py dumpdata > fixtures.json
Далее команды по востановлению базы данных из резервной копии. Узнаем CONTAINER ID для контейнера с джанго - "infra-web-1":
docker container ls -a
Копируем файл "fixtures.json" с фикстурами в контейнер::
docker cp fixtures.json <CONTAINER ID>:/app
Применяем фикстуры:
docker-compose exec web python manage.py loaddata fixtures.json
Удаляем файл "fixtures.json" из контейнера:
docker exec -it <CONTAINER ID> bash
rm fixtures.json
exit
- Когда вы запустите проект, по нижеуказанному адресу будет доступна полная документация для API YaMDb в формате Swager
/api/schema/swagger-ui/
и Redoc
/api/schema/redoc/
- Пользователь отправляет POST-запрос с параметрами email и username на эндпоинт
/api/v1/auth/signup/
- Сервис YaMDB отправляет письмо с кодом подтверждения (confirmation_code) на указанный адрес email.
- Пользователь отправляет POST-запрос с параметрами username и confirmation_code на эндпоинт
/api/v1/auth/token/
-
В ответе на запрос ему приходит token (JWT-токен).
-
В результате пользователь получает токен и может работать с API проекта, отправляя этот токен с каждым запросом. После регистрации и получения токена пользователь может отправить PATCH-запрос на эндпоинт
/api/v1/users/me/
и заполнить поля в своём профайле (описание полей — в документации).
Никита Лукьянчук (8-918-261-01-04 nikluk@mail.ru), Елена Тимофеева, Дмитрий Бессмертный