Coder Social home page Coder Social logo

egorcoders / yamdb_final Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 2.5 MB

Яндекс Практикум. Проект 16-го спринта: Continuous Integration и Continuous Deployment проекта api_yamdb. Автоматический запуск тестов, обновление образов на Docker Hub, деплой на боевой сервер при пуше в главную ветку main.

Shell 0.41% Python 97.52% Dockerfile 0.44% HTML 1.63%
django-framework docker docker-compose gitactions-workflow postgresql python3

yamdb_final's Introduction

Проект YaMDb

Python Django Pytest

Яндекс Практикум. Проект 16-го спринта: CI и CD проекта api_yamdb.

Описание

Проект YaMDb собирает отзывы пользователей на произведения из категорий: «Книги», «Фильмы», «Музыка».

Функционал

  • Произведения делятся на категории. Список категорий может быть расширен администратором;
  • Произведения, фильмы и музыка не хранятся в приложении;
  • В каждой категории есть произведения: книги, фильмы или музыка;
  • Произведению может быть присвоен жанр из списка предустановленных. Новые жанры может создавать только администратор;
  • Пользователи могут оставлять отзывы и ставить оценку произведениям. Из пользовательских оценок формируется рейтинг. На одно произведение можно оставить только один отзыв.

Установка

  1. Клонировать репозиторий:

    git clone https://github.com/egorcoders/yamdb_final.git
  2. Создать .env файл на уровне с файлом docker-compose.yaml в директории infra с указаниме данных:

    • SECRET_KEY - секретный ключ Django;
    • DB_ENGINE - движок базы данных (БД) postgresql: django.db.backends.postgresql;
    • DB_NAME - имя БД: postgres;
    • POSTGRES_USER - пользователь БД: postgres;
    • POSTGRES_PASSWORD - пароль рользователя БД: postgres;
    • DB_HOST - адрес удалённого сервера БД, по умолчанию: db;
    • DB_PORT - порт сервера базы данных: 5432;
  3. Создать и активировать виртуальное пространство, установить зависимости и запустить тесты:

    Для Windows:

    cd yamdb_final
    python -m venv venv
    source venv/Scripts/activate
    cd api_yamdb
    pip install -r requirements.txt
    cd ..
    pytest

    Для Mac/Linux:

    cd yamdb_final
    python3 -m venv venv
    source venv/bin/activate
    cd api_yamdb
    pip install -r requirements.txt
    cd ..
    pytest
  4. Запустить контейнер Docker:

    • Проверить статус Docker:
    docker --version
    • Запустить docker-compose:
    cd infra/
    docker-compose up -d
  5. Выполнить миграции, создать суперпользователя и мигрировать статику:

    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
  6. Для запуска в виртуальном окружении, после создания и активации виртуального пространства, установки зависимостей, запустить проект локально:

    Для Windows:

    python manage.py runserver

    Для Mac/Linux:

    python3 manage.py runserver
  7. Проверить доступность сервиса:

    http://localhost/admin
    http://51.250.80.244/admin

yamdb_final's People

Contributors

egorcoders avatar

Watchers

 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.