Skip to content

Nikita-Kechaev/foodgram-project-react

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

77 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Foodgram

example workflow

Python Django Django REST Framework PostgreSQL Nginx gunicorn docker GitHub%20Actions Yandex.Cloud

Подготовка и запуск проекта локально

Склонировать репозиторий на локальную машину

    DB_ENGINE=<django.db.backends.postgresql>
    DB_NAME=<имя базы данных postgres>
    POSTGRES_USER=<пользователь бд>
    POSTGRES_PASSWORD=<пароль>
    DB_HOST=db
    DB_PORT=<5432>
    DJANGO_SECRET_KEY=<секретный ключ проекта django>
    DJANGO_DEBUG=1
  • перейдите в директорию infra/

  • выполните команду sudo docker-compose up

  • Выполните миграции:

sudo docker-compose exec backend python manage.py makemigrations
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 loaddata foodgram_db.json

Наполнение ингредиентов осуществляется за счёт библиотеки django-import-export через админ панель. Перейдите в админ панель в модель ингредиентов и укажите файл ingredients.json, который находится в корне проекта foodgram/data/, для импорта, после чего подтвердите импорт - confirm.

  • Админ-панель проекта доступна по адресу
http://127.0.0.1:8000/admin
  • Проект доступен по адресу
http://127.0.0.1:8000
  • Развертывание проекта на удаленном сервере:

  • Выполните вход на свой удаленный сервер

  • Установите docker на сервер:

sudo apt install docker.io 
  • Установите docker-compose на сервер:
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
  • Локально отредактируйте файл infra/nginx.conf и в строке server_name впишите свой своего сервера

  • Скопируйте файлы docker-compose.yml и nginx.conf из директории infra на сервер:

scp docker-compose.yml <username>@<host>:/home/<username>/docker-compose.yml
scp nginx.conf <username>@<host>:/home/<username>/nginx/default.conf
  • Скопируйте тестовые данные из директории backend/foodgram/data/foodgram_db.json:
scp foodgram_db.json <username>@<host>:/home/<username>/foodgram_db.json
  • Cоздайте .env файл и впишите:

    DB_ENGINE=<django.db.backends.postgresql>
    DB_NAME=<имя базы данных postgres>
    DB_USER=<пользователь бд>
    DB_PASSWORD=<пароль>
    DB_HOST=<db>
    DB_PORT=<5432>
    DJANGO_SECRET_KEY=<секретный ключ проекта django>
    DJANGO_DEBUG=1
  • Для работы с Workflow добавьте в Secrets GitHub переменные окружения для работы:

    DB_ENGINE=<django.db.backends.postgresql>
    DB_NAME=<имя базы данных postgres>
    DB_USER=<пользователь бд>
    DB_PASSWORD=<пароль>
    DB_HOST=<db>
    DB_PORT=<5432>
    
    DOCKER_PASSWORD=<пароль от DockerHub>
    DOCKER_USERNAME=<имя пользователя>
    
    DJANGO_SECRET_KEY=<секретный ключ проекта django>
    
    USER=<username для подключения к серверу>
    HOST=<IP сервера>
    PASSPHRASE=<пароль для сервера, если он установлен>
    SSH_KEY=<ваш SSH ключ (для получения команда: cat ~/.ssh/id_rsa)>
    
    TELEGRAM_TO=<ID чата, в который придет сообщение>
    TELEGRAM_TOKEN=<токен вашего бота>

    Workflow состоит из трёх шагов:

     - Проверка кода на соответствие PEP8
     - Сборка и публикация образа бекенда на DockerHub.
     - Автоматический деплой на удаленный сервер.
     - Отправка уведомления в телеграм-чат.  
  • На сервере соберите docker-compose:

sudo docker-compose up -d --build
  • После успешной сборки на сервере выполните команды (только после первого деплоя):

Соберите статические файлы:

sudo docker-compose exec backend python manage.py collectstatic --noinput

Примените миграции:

sudo docker-compose exec backend python manage.py migrate --noinput

Создать суперпользователя Django:

sudo docker-compose exec backend python manage.py createsuperuser

Проект будет доступен по вашему IP. Наполнение базы тестовыми данными описано выше.

Проект в интернете

  • Проект запущен и доступен по адресу

  • Admin - панель доступна по адресу

  • логин/email/пароль суперпользователя: admin/[email protected]/qwerty123

About

Foodgram project template

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published