Foodgram (https://100yp.ddns.net) - это проект, на котором пользователи могут публиковать свои рецепты, добавлять чужие рецепты в избранное и подписываться на публикации других авторов. Зарегистрированным пользователям также доступен сервис «Список покупок».
Зарегистрированные пользователи могут:
- добавлять рецепты
- подписываться на других авторов рецептов
- добавлять рецепты в избранное
- добавлять рецепты в список покупок и скачивать файл
Внимание! Проект работает с версией Python 3.9+
Для работы проекта необходимо, чтобы на Вашем сервере был установлен docker (https://docs.docker.com/engine/install/ubuntu/) и корневой веб-сервер для проксирования потока в проект.
Проект представляет из себя 4 контейнера docker, логически связанных между собой сетью докера (compose) и проксированием между ними nginx:
- backend: django приложение бэкенда
- frontend: SPA-приложение на React
- db: база данных Postgres
- gateway: nginx веб-сервер
- Склонировать репозиторий:
git clone git@github.com:Demiat/foodgram.git
- Создать виртуальное окружение:
cd backend/
python -m venv venv
- Активировать виртуальное окружение:
- для linux
source venv/bin/activate - для windows
source venv/Scripts/activate
-
Установить зависимости:
pip install -r requirements.txt -
Есть возможность заполнить базу данными, используя команды:
- Для загрузки продуктов:
python manage.py load_products data/ingredients.json
- Для загрузки тегов:
python manage.py load_tags data/tags.json
- Создать файл с переменными окружения .env со следующими полями:
USE_POSTGRES=True
где:
-
True - использование POSTGRES
-
False - использование SQLite
-
Заполняется для использования Postgres
POSTGRES_DB=<имя базы>
POSTGRES_USER=<пользователь postgres>
POSTGRES_PASSWORD=<пароль пользователя postgres>
DB_HOST=<имя хоста базы>
DB_PORT=<порт базы>
DB_NAME=<имя базы>
- Остальные настройки для settings.py Django-приложения
SECRET_KEY=<секретный ключ django-приложения, взять из settings.py>
ALLOWED_HOSTS=<список разрешенных хостов, без пробелов через запятую>
DEBUG=<False или True>
- Скопировать файл docker-compose.production.yml в целевую директорию на Вашем удаленном сервере
- sudo docker compose -f docker-compose.production.yml pull
- sudo docker compose -f docker-compose.production.yml up -d
- При команде git push в ветку main проект тестируется и разворачивается автоматически.
- При git push в иную ветку производится только тестирование.
Управление проектом доступно по REST API. Документация к API доступна по адресам:
Доступ к админ-панели осуществляется через следующий URL: Администраторам: Администраторская панель
Сервер доступен по адресу: Основной сервер: Сервер приложения
Автор: Тарасов Дмитрий