Продуктовый помощник Foodgram - дипломный проект студента 52 когорты Яндекс.Практикум 2022-2023 гг. Заводова А. В.
Адрес сервера: 130.193.48.165, foodgramsleekvortex.ddns.net Суперюзер (админ): логин - admin@mail.com; пароль - admin
После запуска проекта, он будет доступен по адресу http://127.0.0.1 Как запустить и посмотреть в действии описано ниже.
«Продуктовый помощник»: Приложение позволяет пользователям публиковать рецепты, подписываться на публикации других авторов и добавлять рецепты в избранное. Сервис "Список покупок" позволяет создать список продуктов, которые необходимо приобрести для приготовления выбранного блюда в соответствии с рецептом.
# В 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@ipsudo apt update && sudo apt upgrade -y && sudo apt install curl -ysudo curl -fsSL https://get.docker.com -o get-docker.sh && sudo sh get-docker.sh && sudo rm get-docker.shsudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-composesudo chmod +x /usr/local/bin/docker-composesudo systemctl start docker.service && sudo systemctl enable docker.serviceВсё, что нам нужно, установлено, далее, создаем папку /infra в домашней директории /home/username/:
cd ~mkdir infraПредварительно из папки /backend и /frontend загрузим актуальные данные на DockerHub (на вашем ПК):
Выполняйте команды из корневого каталога проекта.
docker login -u sleekvortexcd backenddocker build -t sleekvortex/foodgram_backend:latest .docker push sleekvortex/foodgram_backend:latestcd ../frontenddocker build -t sleekvortex/foodgram_frontend:latest .docker push sleekvortex/foodgram_frontend:latestПеренести файлы docker-compose.yml и default.conf на сервер, из папки infra в текущем репозитории (на вашем ПК).
Выполняйте команды из корневого каталога проекта.
cd infrascp 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 makemigrationssudo docker-compose exec foodgram_backend python manage.py migrate --noinputsudo docker-compose exec foodgram_backend python manage.py createsuperusersudo docker-compose exec foodgram_backend python manage.py collectstatic --no-inputДополнительно можно наполнить DB ингредиентами и тэгами:
sudo docker-compose exec foodgram_backend python manage.py load_tagssudo docker-compose exec foodgram_backend python manage.py load_csvТакже в проекте предусмотрена команда, которая наполняет БД ингредиентами и тегами одновременно:
sudo docker-compose exec foodgram_backend python manage.py load_dataЕсли вы получили зеленое сообщение, значит всё прошло успешно!
На этом всё, продуктовый помощник запущен, можно наполнять его рецептами и делится с друзьями!
Для 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_tagssudo docker-compose exec foodgram_backend python manage.py load_ingrsИли воспользуйтесь следующей командой, которая объединяет функционал предыдущих двух:
sudo docker-compose exec foodgram_backend python manage.py load_datahttp://localhost/api/docs/redoc.htmlАвтор: Заводов Андрей