Skip to content

🍕Foodgram - сервис для публикации, добавление в избранное и формирование списка выбранных рецептов / подписки на интересных авторов.

Notifications You must be signed in to change notification settings

krivse/foodgram

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

94 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

status workflow

Python Django Django Rest Framework Docker Gunicorn NGINX PostgreSQL Yandex Cloud Continuous Integration Continuous Deployment

Foodgram

Foodgram, «Продуктовый помощник». Онлайн-сервис и API для него. На этом сервисе пользователи публикуют свои рецепты, подписываются на публикации других пользователей, добавляют понравившиеся рецепты в список «Избранное», а перед походом в магазин могут скачать сводный список продуктов, необходимых для приготовления одного или нескольких выбранных блюд.

Ссылка на проект

Ссылка на админ-зону

Ссылка на документацию к API с актуальными адресами. Здесь описана структура возможных запросы и ожидаемых ответов

Развернуть проект на удаленном сервере:

Клонировать репозиторий:

git@github.com:krivse/Foodgram.git

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

sudo apt install curl                                   - установка утилиты для скачивания файлов
curl -fsSL https://get.docker.com -o get-docker.sh      - скачать скрипт для установки
sh get-docker.sh                                        - запуск скрипта
sudo apt-get install docker-compose-plugin              - последняя версия docker compose

Скопировать на сервер файлы docker-compose.yml, nginx.conf из папки infra (команды выполнять находясь в папке infra):

scp docker-compose.yml nginx.conf username@IP:/home/username/

# username - имя пользователя на сервере
# IP - публичный IP сервера

Для работы с 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 (порт по умолчанию)

_Создать и запустить контейнеры Docker, выполнить команду на сервере (версии команд "docker compose" или "docker-compose" отличаются в зависимости от установленной версии Docker Compose):_

sudo docker compose up -d

Выполнить миграции:

sudo docker compose exec backend python manage.py migrate

Собрать статику:

sudo docker compose exec backend python manage.py collectstatic --noinput

Наполнить базу данных содержимым из файла ingredients.json:

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

Создать суперпользователя:

sudo docker compose exec backend python manage.py createsuperuser

Для остановки контейнеров Docker:

sudo docker compose down -v      - с их удалением
sudo docker compose stop         - без удаления

После каждого обновления репозитория (push в ветку master) будет происходить:

  1. Проверка кода на соответствие стандарту PEP8 (с помощью пакета flake8)
  2. Сборка и доставка докер-образов frontend и backend на Docker Hub
  3. Разворачивание проекта на удаленном сервере
  4. Отправка сообщения в Telegram в случае успеха

Локальный запуск проекта:

Склонировать репозиторий к себе

git@github.com:krivse/Foodgram.git

В директории infra файл myenv.env переименовать в .env и заполнить своими данными:

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

Создать и запустить контейнеры Docker, как указано выше.

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

Документация будет доступна по адресу: http://localhost/api/docs/

Автор

Иван Красников

About

🍕Foodgram - сервис для публикации, добавление в избранное и формирование списка выбранных рецептов / подписки на интересных авторов.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published