Skip to content

API для проекта YaMDB в контейнере Docker

Notifications You must be signed in to change notification settings

Esperansa08/yamdb_final-2

 
 

Repository files navigation

API для проекта YaMDB в контейнере Docker

API for YaMDB project workflow

Python Nginx gunicorn docker GitHub%20Actions Yandex.Cloud DjangoREST Postgres

Описание

Возможности проекта

Представляет собой расширение возможностей проекта YaMDB для совершения удаленных операций.
Благодаря этому проекту зарегистрированные и аутентифицированные пользователи получают возможность оставлять рецензии на произведения различных категорий, комментировать рецензии других пользователей,просматривать сформированные на основе оценок рейтинги произведений. Сайт не предоставляет прямой доступ или ссылки для ознакомления непосредственно с произведениями.

Расширение функциональности

Функционал проекта адаптирован для использования PostgreSQL и развертывания в контейнерах Docker. Используются инструменты CI и CD.

Ссылка на сайт

Проект был запущен и доступен по адресу.

Может быть недоступно в связи с прекращением обслуживания.

Технологии

  • Python 3.7
  • Django 2.2.16
  • REST Framework 3.12.4
  • PyJWT 2.1.0
  • Django filter 21.1
  • Gunicorn 20.0.4
  • PostgreSQL 12.2
  • Docker 20.10.2
  • подробнее см. прилагаемый файл зависимостей requrements.txt

Установка

Шаблон описания файла .env

  • DB_ENGINE=django.db.backends.postgresql
  • DB_NAME=postgres
  • POSTGRES_USER=postgres
  • POSTGRES_PASSWORD=postgres
  • DB_HOST=db
  • DB_PORT=5432
  • SECRET_KEY=<секретный ключ проекта django>

Инструкции для развертывания и запуска приложения

для Linux-систем все команды необходимо выполнять от имени администратора

  • Склонировать репозиторий
git clone https://github.com/bondarval/yamdb_final.git
  • Выполнить вход на удаленный сервер
  • Установить docker на сервер:
apt install docker.io 
  • Установить docker-compose на сервер:
curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
  • Локально отредактировать файл infra/nginx.conf, обязательно в строке server_name вписать IP-адрес сервера
  • Скопировать файлы docker-compose.yml и nginx.conf из директории infra на сервер:
scp docker-compose.yml <username>@<host>:/home/<username>/docker-compose.yml
scp nginx.conf <username>@<host>:/home/<username>/nginx.conf
  • Создать .env файл по предлагаемому выше шаблону. Обязательно изменить значения POSTGRES_USER и POSTGRES_PASSWORD
  • Для работы с Workflow добавить в Secrets GitHub переменные окружения для работы:
    DB_ENGINE=<django.db.backends.postgresql>
    DB_NAME=<имя базы данных postgres>
    DB_USER=<пользователь бд>
    DB_PASSWORD=<пароль>
    DB_HOST=<db>
    DB_PORT=<5432>
    
    DOCKER_PASSWORD=<пароль от DockerHub>
    DOCKER_USERNAME=<имя пользователя>
    
    SECRET_KEY=<секретный ключ проекта django>
    
    USER=<username для подключения к серверу>
    HOST=<IP сервера>
    PASSPHRASE=<пароль для сервера, если он установлен>
    SSH_KEY=<ваш SSH ключ (для получения команда: cat ~/.ssh/id_rsa)>
    
    TELEGRAM_TO=<ID чата, в который придет сообщение>
    TELEGRAM_TOKEN=<токен вашего бота>
    
    Workflow состоит из четырёх шагов:
    • Проверка кода на соответствие PEP8
    • Сборка и публикация образа бекенда на DockerHub.
    • Автоматический деплой на удаленный сервер.
    • Отправка уведомления в телеграм-чат.
  • собрать и запустить контейнеры на сервере:
docker-compose up -d --build
  • После успешной сборки выполнить следующие действия (только при первом деплое):
    • провести миграции внутри контейнеров:
    docker-compose exec web python manage.py migrate
    • собрать статику проекта:
    docker-compose exec web python manage.py collectstatic --no-input
    • Создать суперпользователя Django, после запроса от терминала ввести логин и пароль для суперпользователя:
    docker-compose exec web python manage.py createsuperuser

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

  • Заполнить базу данными
  • Создать резервную копию данных:
docker-compose exec web python manage.py dumpdata > fixtures.json
  • Остановить и удалить неиспользуемые элементы инфраструктуры Docker:
docker-compose down -v --remove-orphans

Примеры API-запросов

Подробные примеры запросов и коды ответов приведены в прилагаемой документации в формате ReDoc

Авторы

  • Абрамов Кирилл
  • Бондарь Валерий
  • Кулеш Иван

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 44.0%
  • CSS 40.2%
  • Python 15.4%
  • Other 0.4%