Skip to content

kkhitalenko/Foodgram

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

67 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

foodgram_workflow

Foodgram

Foodgram - продуктовый помощник, онлайн-сервис и API для него. На этом сервисе пользователи могут публиковать рецепты, подписываться на публикации других пользователей, добавлять понравившиеся рецепты в список «Избранное», а перед походом в магазин скачивать список продуктов, необходимых для приготовления одного или нескольких выбранных блюд

Исходные данные
  • фронтенд на React;
  • техническое описание проекта;
  • Redoc спецификация API;
  • список ингредиентов в формате JSON для загрузки в базу Postgres
Что было сделано
  • создан Django-проект;
  • создан API-сервис на базе проекта;
  • настроено взаимодействие с фронтендом, написанным на React;
  • созданы образы и запушены на DockerHub;
  • созданы, развёрнуты и запущены на сервере мультиконтейнерные приложения;
  • настроен CI/CD
Запуск проекта на удалённом сервере

Необходимые технологии: Docker, Docker-Compose

  • Клонировать репозиторий и перейти в него в командной строке:
git clone git@github.com:kkhitalenko/Foodgram/
cd Foodgram/infra/
  • В файле nginx.conf указать свой IP-адрес или доменное имя в строке server_name
  • Скопировать nginx.conf и docker-compose.yml на сервер с помощию sftp:
$ sftp {user}@{host}:{remote-path} <<< $'put {local-path}'
  • Создать .env файл и заполнить его по аналогии с файлом .env.example
  • Для того, чтобы workflow корректно отработал, необходимо добавить в GitHub Actions следующие переменные в secrets. Для этого нужно перейти в настройки репозитория Settings, выбрать на панели слева Secrets, нажать New secret и последовательно добавлять каждую переменную:
DB_ENGINE=django.db.backends.postgresql
DB_NAME=<имя базы данных postgres, как в файле .env>
POSTGRES_USER=<логин для подключения к базе данных, как в файле .env>
POSTGRES_PASSWORD=<пароль для подключения к БД, как в файле .env>
DB_HOST=db
DB_PORT=5432
DOCKER_PASSWORD=<ваш пароль от DockerHub>
DOCKER_USERNAME=<ваше имя пользователя на DockerHub>
USER=<имя пользователя для подключения к серверу>
HOST=<IP-адрес вашего сервера>
PASSPHRASE=<если при создании ssh-ключа вы использовали фразу-пароль, укажите её здесь>
SSH_KEY=<приватный ключ с компьютера, имеющего доступ к боевому серверу>

Последующая работа будет проходить на сервере, поэтому необходимо

  • подключиться к серверу с помощью ssh:
$ ssh <имя пользователя для подключения к серверу>@<IP-адрес вашего сервера>
  • запустить docker-compose:
sudo docker-compose up -d --build
  • при первом запуске необходимо будет выполнить следующие команды:
    sudo docker-compose exec backend python manage.py makemigrations
    sudo docker-compose exec backend python manage.py migrate users
    sudo docker-compose exec backend python manage.py migrate
    sudo docker-compose exec backend python manage.py collectstatic --noinput
    sudo docker-compose exec backend python manage.py createsuperuser
    sudo docker-compose exec backend python manage.py import_json
    

🛠️ Используемые технологии:

Python  Django  Postgresql  Linux  Ubuntu  Docker  Nginx