Skip to content

Foodgram - это "Продуктовый помощник" - онлайн-сервис и соответствующее API.

Notifications You must be signed in to change notification settings

FluckyGo/foodgram-project-react

Repository files navigation

Foodgram

Foodgram - это "Продуктовый помощник" - онлайн-сервис и соответствующее API. Этот сервис позволяет пользователям делиться своими рецептами, подписываться на публикации других пользователей, добавлять понравившиеся рецепты в закладки и загружать объединенный список ингредиентов, необходимых для приготовления выбранных блюд, перед походом в магазин.

Ссылка на Фудграм: https://foodgramforpeoples.sytes.net

Репозиторий проекта:

git@github.com:FluckyGo/foodgram-project-react.git

После каждого push в ветку main будет происходить:

  • Проверка на соблюдение стандарта PEP8 с использованием инструментов flake8 и Isort для проверки кода.
  • Развертывание проекта на удаленном сервере.
  • Уведомление в Telegram в случае успешного выполнения задачи.

Для использования GitHub Actions необходимо добавить переменные окружения в секции Secrets / Actions в настройках репозитория:

SECRET_KEY              - секретный ключ Django проекта
DOCKER_PASSWORD         - пароль от Docker Hub
DOCKER_USERNAME         - логин Docker Hub
HOST                    - публичный IP сервера
USER                    - имя пользователя на сервере
PASSPHRASE              - *если ssh-ключ защищен паролем
SSH_KEY                 - приватный ssh-ключ
TELEGRAM_TO             - ID телеграм-аккаунта для посылки сообщения
TELEGRAM_TOKEN          - токен бота, посылающего сообщение

DB_ENGINE               - django.db.backends.postgresql
DB_NAME                 - postgres
POSTGRES_USER           - postgres
POSTGRES_PASSWORD       - postgres
DB_HOST                 - db
DB_PORT                 - 5432 (порт по умолчанию)

Запуск проекта локально:

Репозиторий проекта, клонируйте на локальный компьютер:

git@github.com:FluckyGo/foodgram-project-react.git

В директории проекта на примере .env.example создать .env и переместить в папку Infra или создать файл сразу в ней:

DB_ENGINE=django.db.backends.postgresql
DB_NAME=postgres
POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgres
DB_HOST=db
DB_PORT=5432

Перейти в папку Infra:

cd infra/

Запустить проект с помощью Docker:

sudo docker compose up --build

sudo docker compose exec backend python manage.py makemigrations

sudo docker compose exec backend python manage.py migrate

sudo docker compose exec backend python manage.py collectstatic

sudo docker compose -f docker-compose.production.yml exec backend cp -r /app//backend_static/static/. /backend_static/static/

sudo docker compose exec backend python manage.py loaddata ingredients.json

sudo docker compose exec backend python manage.py createsuperuser

Проект доступен локально по адресу : http://localhost:8000/

Деплой проекта на сервере:

Подключитесь к вашему удалённому серверу:

ssh -i путь_до_файла_с_SSH_ключом/название_файла_с_SSH_ключом имя_пользователя@ip_адрес_сервера

Подготовьте свой удаленный сервер к публикации проекта:

sudo npm cache clean --force

sudo apt clean

sudo journalctl --vacuum-time=1d

sudo docker system prune -af

Установка Docker и Docker Compose на сервер:

sudo apt update - Обновите пакеты

sudo apt install curl - Консольная утилита, которая умеет скачивать файлы по команде пользователя

curl -fSL https://get.docker.com -o get-docker.sh - скрипт для установки докера с официального сайта 

sudo sh ./get-docker.sh - Скрипт установит Docker

sudo apt install docker-compose-plugin - Скрипт установит Docker Compose

sudo systemctl status docker - Проверка статуса Docker

Создать папку Foodgram на сервере:

mkdir foodgram && cd foodgram/

Создать .env в папке Foodgram на сервере:

touch .env

Копировать файлы из 'infra/' на локальном компьютере на сервер:

scp -i path_to_SSH/SSH_name docker-compose.production.yml \
    username@server_ip:/home/username/foodgram/docker-compose.production.yml 

Запустите Docker Compose с этой конфигурацией на своём компьютере:

sudo docker compose -f docker-compose.production.yml up

Бэк написал:

FluckyGo

About

Foodgram - это "Продуктовый помощник" - онлайн-сервис и соответствующее API.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published