- Описание
- Технологии
- Шаблон заполнения .env-файла
- Запуск проекта на локальной машине
- Запуск проекта на боевом сервере
- Авторы
Foodgram - продуктовый помощник с базой кулинарных рецептов. Позволяет публиковать рецепты, сохранять избранные, а также формировать список покупок для выбранных рецептов. Можно подписываться на любимых авторов.
Проект адаптирован для использования PostgreSQL и развёртывания в контейнерах Docker.
Также используютя инструменты CI/CD.
SECRET_KEY = 'Ваш секретный ключ'
DB_ENGINE=django.db.backends.postgresql # указываем, что работаем с postgresql
DB_NAME=postgres # имя базы данных
POSTGRES_USER=postgres # логин для подключения к базе данных
POSTGRES_PASSWORD=postgres # пароль для подключения к БД
DB_HOST=db # название сервиса (контейнера)
DB_PORT=5432 # порт для подключения к БД
- Склонируйте репозиторий
git clone git@github.com:dmsnback/foodgram-project-react.git
- Переходим в папку с файлом
docker-compose.yaml
cd infra
- Запускаем Docker контейнеры
docker-compose up -d --build
- Выполняем миграции
docker-compose exec backend python manage.py migrate
- Создаём суперюзера
docker-compose exec backend python manage.py createsuperuser
- Собираем статику
docker-compose exec backend python manage.py collectstatic --no-input
- Наполняем базу данных содержимым из файла
ingredients.csv
:
docker-compose exec backend python manage.py load_ingredients
В документации описано, как должен работать ваш API. Документация представлена в формате Redoc.
- Склонируйте репозиторий
git clone git@github.com:dmsnback/foodgram-project-react.git
-
Зайдите на удалённый сервер
-
Обновите существующий список пакетов:
sudo apt update
- Установите Docker на сервер:
sudo apt install docker.io
- Установите docker-compose на сервер:
sudo curl -L "https://github.com/docker/compose/releases/download/1.26.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
- Затем необходимо задать правильные разрешения, чтобы сделать команду docker-compose исполняемой:
sudo chmod +x /usr/local/bin/docker-compose
- Чтобы проверить успешность установки, запустите следующую команду:
sudo docker-compose --version
Вывод будет выглядеть следующим образом:
docker-compose version 1.29.2, build unknown
-
Локально отредактируйте файл
infra/nginx.conf
, в строкеserver_name
вписать IP-адрес или доменное имя сервера. -
Скопируйте файлы docker-compose.yaml и nginx/nginx.conf из вашего проекта на сервер в
home/<ваш_username>/docker-compose.yaml
иhome/<ваш_username>/nginx.conf
соответственно.
scp docker-compose.yml <username>@<host>:/home/<username>/docker-compose.yml
scp default.conf <username>@<host>:/home/<username>/nginx.conf
- Для работы с
Workflow
добавить вSecrets GitHub
переменные окружения для работы:
DB_ENGINE=django.db.backends.postgresql # указываем, что работаем с postgresql
DB_NAME=postgres # имя базы данных
POSTGRES_USER=postgres # логин для подключения к базе данных
POSTGRES_PASSWORD=postgres # пароль для подключения к БД
DB_HOST=db # название сервиса (контейнера)
DB_PORT=5432 # порт для подключения к БД
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 на сервер
-
Workflow состоит из пяти шагов:
-
Проверка кода на соответствие стандарту
PEP8
. -
Сборка и доставка докер-образа для контейнера
backend
наDocker Hub
. -
Сборка и доставка докер-образа для контейнера
frontend
наDocker Hub
. -
Автоматический деплой проекта на боевой сервер.
-
Отправка уведомления в
Telegram
о том, что процесс деплоя успешно завершился.
-
-
После сборки контейнера зайдите на сервер и выполните следующие команды:
# Выполняем миграции
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
<ваш_ip-адрес_или_домен>/api/docs/
В документации описано, как должен работать ваш API. Документация представлена в формате Redoc.