#
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-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
sudo apt install docker.io
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
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-адрес или доменное имя сервера.
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 переменные окружения для работы:
```python
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 на сервер___
- <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
<ваш_ip-адрес_или_домен>/api/docs/
В документации описано, как должен работать ваш API. Документация представлена в формате Redoc.