Skip to content

Service with movie ratings. / Used: Python, Django, DRF, PostgreSQL, Docker, etc.

Notifications You must be signed in to change notification settings

DKDemerchyan/YamDB

Repository files navigation

Проект API_Yamdb с CI и CD

Python Django Django REST Framework Docker Postgres Git GitHub Yandex_Cloud .ENV

Описание проекта

Проект собирает отзывы пользователей на произведения. Произведения делятся на категории. Список категорий может быть расширен.

Функционал:
REVIEWS
  • Получить список всех отзывов
  • Создать новый отзыв
  • Получить отзыв по id
  • Частично обновить отзыв по id
  • Удалить отзыв по id
COMMENTS
  • Получить список всех комментариев к отзыву по id
  • Создать новый комментарий для отзыва
  • Получить комментарий для отзыва по id
  • Частично обновить комментарий к отзыву по id
  • Удалить комментарий к отзыву по id
AUTH
  • Отправление confirmation_code на переданный email
  • Получение JWT-токена в обмен на email и confirmation_code
USERS
  • Получить список всех пользователей
  • Создание пользователя
  • Получить пользователя по username
  • Изменить данные пользователя по username
  • Удалить пользователя по username
  • Получить данные своей учетной записи
  • Изменить данные своей учетной записи
CATEGORIES
  • Получить список всех категорий
  • Создать категорию
  • Удалить категорию
GENRES
  • Получить список всех жанров
  • Создать жанр
  • Удалить жанр
TITLES
  • Получить список всех объектов
  • Создать произведение для отзывов
  • Информация об объекте
  • Обновить информацию об объекте
  • Удалить произведение

Описание Workflow

Workflow состоит из четырёх шагов:
tests
  • Проверка кода на соответствие PEP8, автоматический запуск тестов.
Push Docker image to Docker Hub
  • Сборка и публикация образа на DockerHub.
deploy
  • Автоматический деплой на боевой сервер при пуше в главную ветку main.
send_massage
  • Отправка уведомления в телеграм-чат.

Подготовка и запуск проекта

Клонирование репозитория

Склонируйте репозиторий на локальную машину:

git clone git@github.com:DKDemerchyan/yamdb_final.git

Установка на удаленном сервере (Ubuntu):

Шаг 1. Выполните вход на свой удаленный сервер

Прежде, чем приступать к работе, необходимо выполнить вход на свой удаленный сервер:

ssh <USERNAME>@<IP_ADDRESS>
Шаг 2. Установите docker на сервер:

Введите команду:

sudo apt install docker.io 
Шаг 3. Установите docker-compose на сервер:

Введите команды:

sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
Шаг 4. Скопируйте подготовленные файлы:

Скопируйте подготовленные файлы docker-compose.yaml и nginx/default.conf из вашего проекта на сервер в home/<ваш_username>/docker-compose.yaml и home/<ваш_username>/nginx/default.conf соответственно. Введите команду из корневой папки проекта:

scp docker-compose.yml <username>@<host>:/home/<username>/docker-compose.yml
scp -r nginx/ <username>@<host>:/home/<username>/
Шаг 5. Workflow и .env:

Добавьте Workflow в Github и сделайте pull. Замените workflow-файл на имеющийся в проекте. В Secrets Guthub добавьте:

SECRET_KEY=<SECRET_KEY>
DEBUG=<True/False>
ALLOWED_HOSTS=<hosts>

DB_ENGINE=django.db.backends.postgresql
DB_NAME=postgres
POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgres
DB_HOST=db
DB_PORT=5432

DOCKER_PASSWORD=<пароль DockerHub>
DOCKER_USERNAME=<имя пользователя DockerHub>

USER=<username для подключения к серверу>
HOST=<IP сервера>
PASSPHRASE=<пароль для сервера, если он установлен>
SSH_KEY=<ваш SSH ключ (для получения команда: cat ~/.ssh/id_rsa)>

TELEGRAM_TO=<ID своего телеграм-аккаунта>
TELEGRAM_TOKEN=<токен вашего бота>

В папку infra добавьте файл .env: '''bash DB_ENGINE=django.db.backends.postgresql DB_NAME=postgres POSTGRES_USER=postgres POSTGRES_PASSWORD=postgres DB_HOST=db DB_PORT=5432 '''

Шаг 6. После успешного деплоя:

Зайдите на боевой сервер и выполните команды (только после первого деплоя):

Создаем и применяем миграции:
sudo docker-compose exec web python manage.py makemigrations --noinput
sudo docker-compose exec web python manage.py migrate --noinput
Подгружаем статику
sudo docker-compose exec web python manage.py collectstatic --no-input 
Заполнить базу данных:
sudo docker-compose exec web python3 manage.py loaddata fixtures.json
Создать суперпользователя Django:
sudo docker-compose exec web python manage.py createsuperuser
Шаг 7. Проект запущен

Проект будет доступен по вашему IP-адресу.

Releases

No releases published

Packages

No packages published

Languages