Giter Club home page Giter Club logo

yamdb_final-1's Introduction

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

Авторы

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

yamdb_final-1's People

Contributors

bondarval avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.