Учебный проект Яндекс Практикум (курс Python-разработчик).
Foodgram - сайт, где пользователи могут публиковать рецепты, подписываться на публикации других пользователей, добавлять понравившиеся рецепты в список избранное, а перед походом в магазин скачивать сводный список продуктов, необходимых для приготовления одного или нескольких выбранных блюд.
В рамках проекта реализован бэкенд сайта, его контейнеризация в Docker и развертывание на облачном сервере через GitHub Actions (CI/CD).
Клонировать репозиторий и перейти в директорию infra/
:
git clone https://github.com/bvsvrvb/praktikum-foodgram.git
cd praktikum-foodgram/infra
Создать .env
файл с переменными окружения:
DB_ENGINE=django.db.backends.postgresql
DB_NAME=<имя базы данных postgres>
DB_USER=<пользователь бд>
DB_PASSWORD=<пароль>
DB_HOST=db
DB_PORT=5432
Собрать и запустить контейнеры:
sudo docker-compose up
Выполнить миграции внутри контейнера backend
:
sudo docker-compose exec backend python manage.py migrate
Собрать статику проекта внутри контейнера backend
:
sudo docker-compose exec backend python manage.py collectstatic --noinput
Создать суперпользователя для админ-панели внутри контейнера backend
:
sudo docker-compose exec backend python manage.py createsuperuser
Заполнить БД ингредиентами и тегами внутри контейнера backend
:
sudo docker-compose exec backend python manage.py load_data_ingredients
sudo docker-compose exec backend python manage.py load_data_tags
- Проверка кода тестами.
- Сборка и публикация образа на DockerHub.
- Автоматический деплой и запуск контейнеров на удаленном сервере.
- Отправка уведомления в телеграм-чат.
DB_ENGINE=django.db.backends.postgresql
DB_NAME=<имя базы данных postgres>
DB_USER=<пользователь бд>
DB_PASSWORD=<пароль>
DB_HOST=db
DB_PORT=5432
DOCKER_PASSWORD=<пароль от DockerHub>
DOCKER_USERNAME=<имя пользователя>
USER=<username для подключения к серверу>
HOST=<IP сервера>
PASSPHRASE=<пароль для сервера, если он установлен>
SSH_KEY=<ваш SSH ключ (для получения команда: cat ~/.ssh/id_rsa)>
TELEGRAM_TO=<ID чата, в который придет сообщение>
TELEGRAM_TOKEN=<токен вашего бота>
Выполнить вход на удаленный сервер:
ssh <username>@<host>
Установить Docker на сервере:
sudo apt install docker.io
Установить Docker Compose на сервере:
sudo apt install docker-compose
Скопировать файлы docker-compose.yaml
и default.conf
на сервер:
scp docker-compose.yaml <username>@<host>:/home/<username>/
scp default.conf <username>@<host>:/home/<username>/