Skip to content

evi1ghost/foodgram-project-react

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

51 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Foodgram

Учебный проект

foodgram workflow

Краткое описание:

Веб-приложение для публикации рецептов различных блюд. Реализован следующий функционал: система аутентификации, просмотр рецептов, создание новых рецептов, их изменение, добавление рецептов в избранное и список покупок, выгрузка списка покупок в pdf-файл, возможность подписки на авторов рецептов. В backend-части проекта использованы следующие инструменты: Python3, Django, DjangoREST Framework, PostgreSQL Также применены: CI/CD - GitHub Actions, Docker, Nginx, YandexCloud

Подготовка проекта

Установить Docker и Docker-compose:

sudo apt install docker.io 
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

Клонирование проекта с GitHub:

git clone [email protected]:evi1ghost/foodgram-project-react.git

Переименовать файл .env.example (/<project_dir>/.env.example) в .env и указать в нем недостающую информацию:

Для генерации SECRET_KEY:

openssl rand -hex 32

Полученное значение копируем в .env Также необходимо заполнить POSTGRES_USER и POSTGRES_PASSWORD, указывая желаемый username и password для базы данных.

При запуске на сервере:

В файле /<project_dir>/backend/config/settings.py добавить ip-адрес сервера в список ALLOWED_HOSTS

Запуск docker-контейнеров:

При первом запуске из директории /<project_dir>/infra/ выполнить:

sudo docker-compose up -d --build

При последующих:

sudo docker-compose up -d

Собрать статические файлы:

sudo docker-compose exec web python manage.py collectstatic

Создать базу и применить миграции:

sudo docker-compose exec web python manage.py migrate

Загрузки списка ингредиентов в базу:

sudo docker-compose exec web bash loaddata.sh

Создать запись администратора:

sudo docker-compose exec web python manage.py createsuperuser

Документация будет доступна по адресу: http://127.0.0.1/api/docs/ Админ-панель: http://127.0.0.1/admin/

Использование CI/CD (GitHub Actions):

В переменные окружения (Secrets) добавить секреты из файла .env, а также:

DOCKER_PASSWORD=<пароль от DockerHub>
DOCKER_USERNAME=<имя пользователя DockerHub>
DOCKER_REPO_NAME=<имя репозитория(например, foodgram)>

SSH_HOST=<IP сервера>
SSH_USERNAME=<username для подключения к серверу>
PASSPHRASE=<пароль для использования SSH-ключа>
SSH_KEY=<ваш приватный SSH-ключ>

TELEGRAM_TO=<ID чата для получения уведомления>
TELEGRAM_TOKEN=<токен Telegram-бота>

Workflow при пуше в master-ветку проверит код на соответствие PEP8, пересоберет и опубликует на DockerHub образ для backend-части проекта, задеплоит проект на сервере, в случае успеха отправит сообщение в Telegram

Автор - Андрей Дубинчик: https://github.com/evi1ghost