Сервис FoodGramm «Продуктовый помощник»

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

Проект создан в рамках учебного курса Яндекс.Практикум.

Cайт Foodgram («Продуктовый помощник») создан для начинающих кулинаров и изысканныю гурманов. В сервисе пользователи смогут публиковать рецепты, подписываться на публикации других пользователей, добавлять понравившиеся рецепты в список «Избранное», а перед походом в магазин скачивать сводный список продуктов, необходимых для приготовления одного или нескольких выбранных блюд.

Проект разворачивается в Docker контейнерах: backend-приложение API, postgresql-база данных, nginx-сервер и frontend-контейнер (используется только для сборки файлов и после запуска останавливается).

Реализовано CI и CD проекта. При пуше изменений в главную ветку проект автоматически тестируется на соотвествие требованиям PEP8. После успешного прохождения тестов, на git-платформе собирается образ backend-контейнера Docker и автоматически размешается в облачном хранилище DockerHub. Размещенный образ автоматически разворачивается на боевом сервере вмете с контейнером веб-сервера nginx и базой данных PostgreSQL.

Системные требования

  • Python 3.7+
  • Docker
  • Works on Linux, Windows, macOS, BSD

Стек технологий

  • Python 3.7
  • Django 3.1
  • Rest API
  • PostgreSQL
  • Nginx
  • gunicorn
  • Docker
  • DockerHub
  • JS
  • GitHub Actions (CI/CD)

Установка проекта из репозитория (Linux и macOS)

  1. Клонировать репозиторий и перейти в него в командной строке:
git clone git@github.com:Esposus/foodgram-project-react-1.git

cd Foodgramm
  1. Cоздать и открыть файл .env с переменными окружения:
cd infra

touch .env
  1. Заполнить .env файл с переменными окружения по примеру:
echo DB_ENGINE=django.db.backends.postgresql >> .env

echo DB_NAME=postgres >> .env

echo POSTGRES_PASSWORD=postgres >> .env

echo POSTGRES_USER=postgres >> .env

echo DB_HOST=db >> .env

echo DB_PORT=5432 >> .env
  1. Установка и запуск приложения в контейнерах (контейнер backend загружактся из DockerHub):
docker-compose up -d
  1. Запуск миграций, сбор статики и заполнение БД:
docker-compose exec backend python manage.py migrate

docker-compose exec backend python manage.py collectstatic --no-input