/foodgram-project-react

Foodgram -продуктовый помощник

Primary LanguageJavaScript

Foodgram - Продуктовый помощник

Foodgram workflow

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

Python Django Django REST Framework PostgreSQL Nginx gunicorn docker Yandex.Cloud GitHub%20Actions

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

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

Сайт

Сайт доступен по ссылке: http://foodgram.servehttp.com/

Документация к API

API документация доступна по ссылке (создана с помощью redoc): http://foodgram.servehttp.com/api/docs/

Установка проекта локально

  • Склонировать репозиторий и перейти в него в командной строке:
git clone https://github.com/edw125/foodgram-project-react.git
cd foodgram-project-react
  • Cоздать и активировать виртуальное окружение:
python -m venv env
source env/bin/activate
  • Cоздайте файл .env в директории /infra/ с содержанием:
SECRET_KEY = ${django-secret-key}
ALLOWED_HOSTS = ${localhost 127.0.0.1 backend}
SENTRY_DSN = ${https://example.ingest.sentry.io/5445412}
DB_ENGINE = django.db.backends.postgresql
DB_NAME = postgres
POSTGRES_USER = postgres
POSTGRES_PASSWORD = postgres
DB_HOST = db
DB_PORT = 5432
  • Перейти в директорию и установить зависимости из файла requirements.txt:
cd backend/
pip install -r requirements.txt
  • Выполните миграции:
python manage.py makemigrations
python manage.py migrate
  • Запустите сервер:
python manage.py runserver

Запуск проекта в Docker контейнере

  • Установите Docker

Параметры запуска описаны в файлах docker-compose.yml и nginx.conf которые находятся в директории infra/.
При необходимости добавьте/измените адреса проекта в файле nginx.conf

  • Запустите docker compose:
docker-compose up -d --build

После сборки появятся 3 контейнера:

  1. контейнер базы данных db
  2. контейнер приложения backend
  3. контейнер web-сервера nginx
  • Примените миграции:
docker-compose exec backend python manage.py migrate
  • Создайте администратора:
docker-compose exec backend python manage.py createsuperuser
  • Соберите статику:
docker-compose exec backend python manage.py collectstatic --noinput
  • Дополнительные команды очистки докера:
docker stop $(docker ps -aq) && docker rm $(docker ps -aq)
docker rmi $(docker images -a -q)
docker volume prune
  • Как установить сертификаты SSL: Скопировать файл init-letsencrypt.sh на сервер в домашнюю директорию и вставить свои данные (сервер, почта), либо запустить на сервере команду создания init-letsencrypt.sh
curl -L https://raw.githubusercontent.com/wmnnd/nginx-certbot/master/init-letsencrypt.sh > init-letsencrypt.sh

После того, как все этапы воркфлоу выполнятся, подключить SSL, запустив файл init-letsencrypt.sh

./init-letsencrypt.sh
  • Чтобы залить в базу данные, введите команды:
docker-compose exec backend python manage.py filling --tags
docker-compose exec backend python manage.py filling --ingredients

Готово!

Авторы

https://github.com/Edw125 - Бэкенд и деплой сервиса Foodgram

https://github.com/yandex-praktikum - Фронтенд сервиса Foodgram