Skip to content

sapphirehead/infra_sp2

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

api_yamdb

Проект YaMDb

Проект YaMDb собирает отзывы (Review) пользователей на произведения (Titles). Произведения делятся на категории: «Книги», «Фильмы», «Музыка». Список категорий (Category) может быть расширен администратором (например, можно добавить категорию «Картины» или «Ювелирка»).

Сами произведения в YaMDb не хранятся, здесь нельзя посмотреть фильм или послушать музыку.

Используемые технологии:

Django 2.2.16

Python 3.10.4

Django REST Framework 3.12.4

Simple-JWT 4.8.0

PostgreSQL 13.0-alpine

Nginx 1.21.3-alpine

Gunicorn 20.0.4

Docker 20.10.17, build 100c701

Docker-compose 3.8

Как запустить проект:

  • Для развёртывания проекта необходимо скачать его в нужную вам директорию, например:

git clone [email protected]:sapphirehead/infra_sp2.git

  • В директории infra создайте файл .env с переменными окружения для работы с базой данных:
DJANGO_KEY='your Django secret key'
DB_ENGINE=django.db.backends.postgresql # указываем, что работаем с postgresql
DB_NAME=postgres # имя базы данных
POSTGRES_USER=postgres # логин для подключения к базе данных
POSTGRES_PASSWORD=postgres # пароль для подключения к БД (установите свой)
DB_HOST=db # название сервиса (контейнера)
DB_PORT=5432 # порт для подключения к БД
  • Из папки infra/ разверните контейнеры в новой структуре:

  • Для запуска необходимо выполнить из директории с проектом команду:

sudo docker-compose up -d

Для пересборки команда up выполняется с параметром --build

sudo docker-compose up -d --build

  • Теперь в контейнере web нужно выполнить миграции:

sudo docker-compose exec web python manage.py migrate

  • Создать суперпользователя:

sudo docker-compose exec web python manage.py createsuperuser

  • Собрать статику:

sudo docker-compose exec web python manage.py collectstatic --no-input

  • Вы также можете создать дамп (резервную копию) базы:

sudo docker-compose exec web python manage.py dumpdata > fixtures.json

  • или, разместив, например, файл fixtures.json в папке с Dockerfile, загрузить в базу данные из дампа:

sudo docker-compose exec web python manage.py loaddata fixtures.json

Некоторые полезные команды:

  • Локально создать образ с нужным названием и тегом:

docker build -t <username>/<imagename>:<tag> .

  • Авторизоваться через консоль: docker login

  • А можно сразу указать имя пользователя docker login -u <username>

  • Загрузить образ на DockerHub: docker push <username>/<imagename>:<tag>

  • Проверить файлы в корне проекта:

sudo docker-compose exec web ls -a

  • Остановка всех контейнеров:

sudo docker-compose down

  • Мониторинг запущенных контейнеров:

sudo docker stats

  • Команда покажет, сколько места на диске занимают образы, контейнеры, тома и билд-кеш.

sudo docker system df

  • Останавливаем и удаляем контейнеры, сети, тома вместе со всеми зависимостями. Осталются только образы:

sudo docker-compose down -v

  • Остановить проект сохранив данные в БД:

docker-compose down

  • Остановить проект удалив данные в БД:

docker-compose down --volumes

  • Удалить всё, что не используется (неиспользуемые образы, остановленные контейнеры, тома, которые не использует ни один контейнер, билд-кеш)

sudo docker system prune

Документация: Примеры обращений к эндпоинтам находятся по адресу:

http://localhost:8000/redoc/

Разработчики:

  • Абакумов Максим (категории (Categories), жанры (Genres) и произведения (Titles): модели, представления и эндпойнты для них),
  • Андреев Ярослав (система регистрации и аутентификации, права доступа, работа с токеном, система подтверждения через e-mail.),
  • Быков Евгений (функционал отзывов (Review) и комментариев (Comments): описывал модели, представления, настраивал эндпойнты, определял права доступа для запросов. Писал функционал рейтингов произведений.