Skip to content

eugemos/foodgram-project-react

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Workflow

Сайт для публикации рецептов.

Позволяет всем пользователям просматривать рецепты, опубликованные на сайте. Зарегистрированные пользователи также могут:

  • размещать и редактировать на сайте рецепты различных блюд;
  • подписываться на других авторов рецептов;
  • вносить рецепты в избранное и в список покупок;
  • скачивать себе на компьютер список покупок в текстовом виде.

Использованные технологии

  • бэкенд: Python 3.10, Django 4.2, Django Rest Framework 3.14, PostgreSQL;

  • фронтенд: JavaScript, React;

  • деплой: Gunicorn, Nginx, Docker, Docker Compose.

Как развернуть проект

  1. Создать на хосте папку проекта (например, /foodgram).
  2. Скопировать в папку проекта файл docker-compose.production.yml, расположенный в папке infra/ репозитория проекта.
  3. Скопировать в папку проекта файл ingredients.json, расположенный в папке data/ репозитория проекта.
  4. Создать в папке проекта файл .env с необходимыми переменными окружения.
  5. Перейти в папку проекта и выполнить запуск сети контейнеров приложения:
    sudo docker compose -f docker-compose.production.yml up -d`
    
  6. Скопировать в бэкэнд проекта файл с ингредиентами ingredients.json:
    sudo docker compose -f docker-compose.production.yml cp ingredients.json backend:/app/
    
  7. Выполнить первоначальную настройку проекта, для чего запустить консоль в бэкэнде проекта:
    sudo docker compose -f docker-compose.production.yml exec -it backend bash
    
    и далее выполнить в ней:
    • применение миграций: python manage.py migrate;
    • сбор и копирование статики:
      python manage.py collectstatic
      cp -r /app/collected_static/. /app/static_files/static/
      
    • создать суперпользователя: python manage.py createsuperuser - в ответ на запрос системы ввести данные суперпользователя: e-mail, login (имя пользователя), имя, фамилию и пароль (дважды);
    • заполнить базу данных ингредиентами:
      python manage.py load_ingredients ingredients.json
      
  8. Проект будет работать через стандартный порт 80 хоста.
  9. Теперь можно зайти в раздел администрирования сайта (http:///admin/) от имени созданного суперпользователя и добавить в БД необходимые тэги для рецептов.

Как заполнить файл .env

Файл .env должен содержать следующие переменные окружения:

  • POSTGRES_DB - имя БД PostgreSQL;
  • POSTGRES_USER - имя пользователя для подключения к БД PostgreSQL;
  • POSTGRES_PASSWORD - пароль для подключения к БД PostgreSQL;
  • DB_HOST - имя контейнера-хоста БД PostgreSQL (задайте значение: db);
  • DB_PORT - порт для подключения к БД PostgreSQL;
  • SECRET_KEY - секретный ключ;
  • ALLOWED_HOSTS - список разрешённых хостов, например:
    <ip-адрес хоста>;127.0.0.1;localhost;<доменное имя сайта>
    

Файл .env может также содержать следующие переменные окружения:

  • DEBUG - задаёт отладочный режим работы, если определена;
  • SQLITE_DB - путь к файлу БД Sqlite. Если эта переменная определена и не пуста, то вместо БД PostgreSQL будет использоваться БД Sqlite. Переменные среды, задающие настройки для работы с БД PostgreSQL, в этом случае игнорируются.

В папке infra/ репозитория проекта содержится файл .env.example - пример файла .env.

Автор бэкенда

Москалянов Евгений

Releases

No releases published

Packages

No packages published