Проект создан в рамках учебного курса Яндекс.Практикум.
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)
- Клонировать репозиторий и перейти в него в командной строке:
git clone [email protected]:NikitaChalykh/Foodgramm.git
cd Foodgramm
- Cоздать и открыть файл
.env
с переменными окружения:
cd infra
touch .env
- Заполнить
.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
- Установка и запуск приложения в контейнерах (контейнер backend загружактся из DockerHub):
docker-compose up -d
- Запуск миграций, сбор статики и заполнение БД:
docker-compose exec backend python manage.py migrate
docker-compose exec backend python manage.py collectstatic --no-input
docker-compose exec backend python manage.py loaddata fixtures.json