Foodgram - Продуктовый помощник
Стек технологий
Описание проекта
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 контейнера:
- контейнер базы данных db
- контейнер приложения backend
- контейнер 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