cooking_project

Cooking Project

Cooking workflow

#

Описание

Foodgram - продуктовый помощник с базой кулинарных рецептов. Позволяет публиковать рецепты, сохранять избранные, а также формировать список покупок для выбранных рецептов. Можно подписываться на любимых авторов.

Проект адаптирован для использования PostgreSQL и развёртывания в контейнерах Docker.
Также используютя инструменты CI/CD.

Вернуться в начало

Технологии

Python JavaScript React Django DjangoREST Docker Postgres GitHub Actions Nginx Gunicorn

Вернуться в начало

Шаблон заполнения .env-файла, расположен по пути infra/.env

(в settings.py указаны дефолтные значения для переменных из env-файла)
SECRET_KEY = 'Ваш секретный ключ'

DB_ENGINE=django.db.backends.postgresql # указываем, что работаем с postgresql
DB_NAME=postgres # имя базы данных
POSTGRES_USER=postgres # логин для подключения к базе данных
POSTGRES_PASSWORD=postgres # пароль для подключения к БД
DB_HOST=db # название сервиса (контейнера)
DB_PORT=5432 # порт для подключения к БД 

Вернуться в начало

Запуск проекта на локальной машине:

http://localhost/recipes

Документация к API будет доступна по адресу

http://localhost/api/docs/

В документации описано, как должен работать ваш API. Документация представлена в формате Redoc.

Вернуться в начало

#

Запуск проекта на боевом сервере:

При пуше в ветку main код автоматически проверяется, тестируется и деплоится на сервер

DOCKER_USERNAME= #имя пользователя DOCKER_PASSWORD= #пароль от DockerHub

USER= #username для подключения к серверу HOST= #IP сервера PASSPHRASE= #пароль для сервера, если он установлен SSH_KEY= #ваш SSH ключ (для получения команда: cat ~/.ssh/id_rsa)

TELEGRAM_TO= #ID чата, в который придет сообщение TELEGRAM_TOKEN= #токен вашего бота


___По команде ```git push``` запускается скрипт ```GitHub actions``` который выполняет автоматический deploy на сервер___


- <u>__Workflow состоит из пяти шагов__:</u>

	- Проверка кода на соответствие стандарту ```PEP8```.
	
	- Сборка и доставка докер-образа для контейнера ```backend``` на ```Docker Hub```.
	- Сборка и доставка докер-образа для контейнера ```frontend``` на ```Docker Hub```.
	
	- Автоматический деплой проекта на боевой сервер.
	
	- Отправка уведомления в ```Telegram``` о том, что процесс деплоя успешно завершился.

- После сборки контейнера зайдите на сервер и выполните следующие команды:
```python
# Выполняем миграции
sudo docker-compose exec backend python manage.py migrate

# Создаем суперппользователя
sudo docker-compose exec backend python manage.py createsuperuser

# Собираем статику со всего проекта
sudo docker-compose exec backend python manage.py collectstatic --no-input

# Наполняем базу данных содержимым из файла ingredients.csv
sudo docker-compose exec backend python manage.py load_ingredients

Проект станет доступен по адресу:

<ваш_ip-адрес_или_домен>/recipes

Документация к API:

<ваш_ip-адрес_или_домен>/api/docs/

В документации описано, как должен работать ваш API. Документация представлена в формате Redoc.

Вернуться в начало

Автор backend части:

Вернуться в начало