Проект «Foodgram» - «Продуктовый помощник» - сайт, на котором пользователи будут публиковать рецепты, добавлять чужие рецепты в избранное и подписываться на публикации других авторов. Сервис «Список покупок» позволит пользователям создавать список продуктов, которые нужно купить для приготовления выбранных блюд. Проект «Foodgram» реализован на Django, в свою очередь «API для Foodgram» реализован с использованием библиотеки Django REST Framework (DRF). DRF мощный и гибкий инструмент для построения Web API, который имеет следующие преимущества:
- Крайне удобная для разработчиков браузерная версия API;
- Наличие пакетов для OAuth1a и OAuth2 авторизации;
- Сериализация, поддерживающая ORM и не-ORM источники данных;
- Возможность полной и детальной настройки - можно использовать обычные представления-функции, если вы не нуждаетесь в мощном функционале;
- Расширенная документация и отличная поддержка сообщества.
Клонировать репозиторий и перейти в него в командной строке:
git clone git@github.com:slapeach/foodgram-project-react.git
cd foodgram-project-react
Перейти в директорию infra и создать файл .env (шаблон наполнения env-файла - ниже):
cd infra
touch .env
После заполнения env-файла по шаблону собирается проект и запускаются контейнеры:
docker-compose build
docker-compose up
Для того, чтобы пересобрать и запустить контейнеры, используется команда:
docker-compose up -d --build
Далее выполняются миграции, создается суперпользователь, собирается статика:
docker-compose exec backend python manage.py migrate
docker-compose exec backend python manage.py createsuperuser
docker-compose exec backend python manage.py collectstatic --no-input
Чтобы остановить контейнеры, введите команду:
docker-compose down -v
Указываем, что работаем с postgresql
DB_ENGINE=django.db.backends.postgresql
Указываем имя базы данных
DB_NAME=postgres
Логин для подключения к базе данных
POSTGRES_USER=username
Устанавливаем пароль для подключения в БД
POSTGRES_PASSWORD=user_password
Указываем название сервиса (контейнера)
DB_HOST=db
Указываем порт для подключения к БД
DB_PORT=5432