На этом сервисе пользователи смогут публиковать рецепты, подписываться на публикации других пользователей, добавлять понравившиеся рецепты в список «Избранное», а перед походом в магазин скачивать сводный список продуктов, необходимых для приготовления одного или нескольких выбранных блюд.
tests- проверка кода на соответствие стандарту PEP8;build_and_push_to_docker_hub- сборка и доставка докер-образа для контейнера web на Docker Hub;deploy- автоматический деплой проекта на боевой сервер;send_message- отправка уведомления в Telegram о том, что процесс деплоя успешно завершился.
- Войдите на свой удаленный сервер в облаке.
- Остановите службу
nginx:
sudo systemctl stop nginx
- Установите
docker:
sudo apt install docker.io
- Установите docker-compose, с этим вам поможет официальная документация.
- Скопируйте файлы
docker-compose.yamlиnginx.confиз вашего проекта на сервер вhome/<ваш_username>/docker-compose.yamlиhome/<ваш_username>/nginx.confсоответственно:
scp docker-compose.yaml <username>@<host>:/home/<username>/
scp default.conf <username>@<host>:/home/<username>/
- В репозитории на Гитхабе добавьте данные в
Settings -> Secrets -> Actions -> New repository secret:
DOCKER_USERNAME - ваш username на dockerhub
DOCKER_PASSWORD - ваш пароль на dockerhub
USER - имя пользователя для подключения к серверу
HOST - IP-адрес вашего сервера
SSH_KEY - скопируйте приватный ключ с компьютера, имеющего доступ к боевому серверу (cat ~/.ssh/id_rsa)
PASSPHRASE - если при создании ssh-ключа вы использовали фразу-пароль, то сохраните её в эту переменную
DB_ENGINE - django.db.backends.postgresql
DB_NAME - postgres
POSTGRES_USER - postgres
POSTGRES_PASSWORD - postgres
DB_HOST - db
DB_PORT - 5432
TELEGRAM_TO - ID своего телеграм-аккаунта (узнать свой ID можно у бота @userinfobot)
TELEGRAM_TOKEN - токен вашего бота (получить токен можно у бота @BotFather)
- Выполните миграции в контейнере
backend:
docker-compose exec backend python manage.py migrate
- Создайте суперпользователя в контейнере
backend:
docker-compose exec backend python manage.py createsuperuser
- Соберите статику в контейнере
backend:
docker-compose exec backend python manage.py collectstatic --noinput
- Загрузите начальные данные из файлов
csvв базу данных:
docker-compose exec backend python manage.py load_csv
Сайт доступен по ссылке: http://foodgramproject.hopto.org/
Админка доступка по ссылке: http://foodgramproject.hopto.org/admin/
Документация доступка по ссылке: http://foodgramproject.hopto.org/api/docs/
| user | password | token | superuser | |
|---|---|---|---|---|
| admin | super@user.ru | admin | v | v |
| user1 | normal@user1.ru | foodgram1 | v | х |
| user2 | normal@user2.ru | foodgram2 | х | х |
| Method | Route | Description |
|---|---|---|
| GET | /api/users/ |
Список пользователей |
| POST | /api/users/ |
Регистрация пользователя |
| GET | /api/users/<id>/ |
Профиль пользователя |
| GET | /api/users/me/ |
Текущий пользователь |
| POST | /api/users/set_password/ |
Изменение пароля |
| POST | /api/auth/token/login/ |
Получить токен авторизации |
| POST | /api/auth/token/logout/ |
Удаление токена |
| GET | /api/tags/ |
Cписок тегов |
| GET | /api/tags/<id>/ |
Получение тега |
| GET | /api/recipe/ |
Список рецептов |
| POST | /api/recipe/ |
Создание рецепта |
| GET | /api/recipe/<id>/ |
Получение рецепта |
| PATCH | /api/recipe/<id>/ |
Обновление рецепта |
| DELETE | /api/recipe/<id>/ |
Удаление рецепта |
| GET | /api/recipes/download_shopping_cart/ |
Скачать список покупок |
| POST | /api/recipes/<id>/shopping_cart/ |
Добавить рецепт в список покупок |
| POST | /api/recipes/<id>/shopping_cart/ |
Удалить рецепт из списка покупок |
| POST | /api/recipes/<id>/favorite/ |
Добавить рецепт в избранное |
| DELETE | /api/recipes/<id>/favorite/ |
Удалить рецепт из избранного |
| GET | /api/users/subscriptions/ |
Мои подписки |
| POST | /api/users/<id>/subscribe/ |
Подписаться на пользователя |
| DELETE | /api/users/<id>/subscribe/ |
Отписаться от пользователя |
| GET | /api/ingredients/ |
Список ингредиентов |
| GET | /api/ingredients/<id> |
Получение ингредиента |
Моторин А.В.
В начало ☝️