Skip to content

Проект YaMDb. Разработано: контейнеризация проекта, docker-compose

Notifications You must be signed in to change notification settings

NikLukyan/infra_sp2

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Api_YaMDb

Проект 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

Команды для заполнения базы данных

Вариант 1

Копировать заранее сохраненные фикстуры из папки data в папку infra c помощью команды:

cp data/fixtures.json infra/fixtures.json

Вариант 2

Создать дамп (резервную копию) базы данных "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), Елена Тимофеева, Дмитрий Бессмертный

About

Проект YaMDb. Разработано: контейнеризация проекта, docker-compose

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published