Skip to content

SleekVortex/foodgram-project-react

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

52 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Продуктовый помощник Foodgram - дипломный проект студента 52 когорты Яндекс.Практикум 2022-2023 гг. Заводова А. В.

Адрес сервера: 130.193.48.165, foodgramsleekvortex.ddns.net Суперюзер (админ): логин - admin@mail.com; пароль - admin

После запуска проекта, он будет доступен по адресу http://127.0.0.1 Как запустить и посмотреть в действии описано ниже.

Описание проекта Foodgram

«Продуктовый помощник»: Приложение позволяет пользователям публиковать рецепты, подписываться на публикации других авторов и добавлять рецепты в избранное. Сервис "Список покупок" позволяет создать список продуктов, которые необходимо приобрести для приготовления выбранного блюда в соответствии с рецептом.

Запуск с использованием CI/CD и Docker

# В Settings - Secrets and variables создаем переменный с вашими данными
# Это необходимо для работы с CI/CD, DockerHub, GitHub
ALLOWED_HOSTS
DB_ENGINE
DB_HOST
DB_PORT
HOST
MY_LOGIN
MY_PASS
PASSPHRASE
POSTGRES_DB
POSTGRES_PASSWORD
POSTGRES_USER
SECRET_KEY
SSH_KEY
USER

Все действия мы будем выполнять в Docker, docker-compose как на локальной машине так и на сервере ВМ Yandex.Cloud. Предварительно установим на ВМ в облаке необходимые компоненты для работы:

# username - ваш логин, ip - ip ВМ под управлением Linux Дистрибутива с пакетной базой deb.
ssh username@ip
sudo apt update && sudo apt upgrade -y && sudo apt install curl -y
sudo curl -fsSL https://get.docker.com -o get-docker.sh && sudo sh get-docker.sh && sudo rm get-docker.sh
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
sudo systemctl start docker.service && sudo systemctl enable docker.service

Всё, что нам нужно, установлено, далее, создаем папку /infra в домашней директории /home/username/:

cd ~
mkdir infra

Предварительно из папки /backend и /frontend загрузим актуальные данные на DockerHub (на вашем ПК):

Выполняйте команды из корневого каталога проекта.

docker login -u sleekvortex
cd backend
docker build -t sleekvortex/foodgram_backend:latest .
docker push sleekvortex/foodgram_backend:latest
cd ../frontend
docker build -t sleekvortex/foodgram_frontend:latest .
docker push sleekvortex/foodgram_frontend:latest

Перенести файлы docker-compose.yml и default.conf на сервер, из папки infra в текущем репозитории (на вашем ПК).

Выполняйте команды из корневого каталога проекта.

cd infra
scp docker-compose.yml username@server_ip:/home/username/
scp default.conf username@server_ip:/home/username/

Так же, создаем файл .env в директории infra на ВМ:

touch .env

Заполнить в настройках репозитория секреты .env

Пример заполненного файла:

DB_ENGINE='django.db.backends.postgresql'
POSTGRES_DB='foodgram' # Пример имени для БД.
POSTGRES_USER='foodgram' # Пример пользователя БД.
POSTGRES_PASSWORD='foodgram' # Задаем пароль для БД.
DB_HOST='db' # Пример хоста для БД.
DB_PORT='5432' # Пример порта для БД.
SECRET_KEY='secret'  # Пример секретного ключа.
ALLOWED_HOSTS='127.0.0.1, backend' # Вставляем свой IP сервера и домен.
DEBUG = False # Или же True, в случае дебага.

На этом настройка закончена, далее в папке infra выполняем команду:

sudo docker-compose up -d --build

Проект запустится на ВМ и будет доступен по указанному вами домену либо IP. Завершение настройки на ВМ:

В папке infra выполните команду, что бы собрать контейнеры:

Остановить Контейнеры:

sudo docker-compose stop

Удалить вместе с volumes:

# Все данные удалятся!
sudo docker-compose down -v

Для доступа к контейнеру foodgram_backend и сборки финальной части выполняем следующие команды:

sudo docker-compose exec foodgram_backend python manage.py makemigrations
sudo docker-compose exec foodgram_backend python manage.py migrate --noinput
sudo docker-compose exec foodgram_backend python manage.py createsuperuser
sudo docker-compose exec foodgram_backend python manage.py collectstatic --no-input

Дополнительно можно наполнить DB ингредиентами и тэгами:

sudo docker-compose exec foodgram_backend python manage.py load_tags
sudo docker-compose exec foodgram_backend python manage.py load_csv

Также в проекте предусмотрена команда, которая наполняет БД ингредиентами и тегами одновременно:

sudo docker-compose exec foodgram_backend python manage.py load_data

Если вы получили зеленое сообщение, значит всё прошло успешно!

На этом всё, продуктовый помощник запущен, можно наполнять его рецептами и делится с друзьями!

Запуск проекта в Docker на localhost

Для Linux ставим Docker как описано выше, для Windows устанавливаем актуальный Docker Desktop.

В папке infra выполняем команду, что бы собрать контейнеры:

sudo docker-compose up -d --build

Остановить контейнеры можно следующей командой:

sudo docker-compose stop

Удалить вместе с volumes:

Внимание! Будьте осторожны, следующая команда удаляет все volumes, а значит все данные будут утеряны!

sudo docker-compose down -v

Если вы не хотите удалять volumes, то выполните ту же команду, но без флага -v

sudo docker-compose down

Чтобы получить доступ к контейнерам нужно выполнить следующие команды:

# Создаем миграции
sudo docker-compose exec foodgram_backend python manage.py makemigrations
# Применяем миграции
sudo docker-compose exec foodgram_backend python manage.py migrate --noinput
# Создаем суперюзера (админа)
sudo docker-compose exec foodgram_backend python manage.py createsuperuser
# Собираем статику проекта
sudo docker-compose exec foodgram_backend python manage.py collectstatic --no-input

Также, если у вас есть Докер клиент для компьютера, вы можете через терминал контейнера, отвечающего за бекенд, напрямую писать команды для контейнера. P.S. Всё, что выше, но без sudo.

Дополнительно можно наполнить БД ингредиентами и тегами:

sudo docker-compose exec foodgram_backend python manage.py load_tags
sudo docker-compose exec foodgram_backend python manage.py load_ingrs

Или воспользуйтесь следующей командой, которая объединяет функционал предыдущих двух:

sudo docker-compose exec foodgram_backend python manage.py load_data

Документация к API доступна после запуска

http://localhost/api/docs/redoc.html

Автор: Заводов Андрей

About

Foodgram project template

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors