Продуктовый помощник Foodgram - дипломный проект студента 21 когорты Яндекс.Практикум 2021-2022 гг. Клепикова Д.
После запуска проекта, он будет доступен по адресу 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@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 themasterid
cd backend
docker build -t themasterid/foodgram_backend:latest .
docker push themasterid/foodgram_backend:latest
cd ..
cd frontend
docker build -t themasterid/foodgram_frontend:latest .
docker push themasterid/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_u' # Задаем пользователя для БД.
POSTGRES_PASSWORD='foodgram_u_pass' # Задаем пароль для БД.
DB_HOST='db'
DB_PORT='5432'
SECRET_KEY='secret' # Задаем секрет.
ALLOWED_HOSTS='127.0.0.1, backend' # Вставляем свой IP сервера.
DEBUG = False
На этом настройка закончена, далее в папке infra выполняем команду:
sudo docker-compose up -d --build
Проект запустится на ВМ и будет доступен по указанному вами адресу либо IP. Завершение настройки на ВМ:
В папке infra выполняем команду, что бы собрать контейнеры:
Остановить:
sudo docker-compose stop
Удалить вместе с volumes:
# Все данные удалятся!
sudo docker-compose down -v
Для доступа к контейнеру backend и сборки финальной части выполняем следующие команды:
sudo docker-compose exec backend python manage.py makemigrations
sudo docker-compose exec backend python manage.py migrate --noinput
sudo docker-compose exec backend python manage.py createsuperuser
sudo docker-compose exec backend python manage.py collectstatic --no-input
Дополнительно можно наполнить DB ингредиентами и тэгами:
sudo docker-compose exec backend python manage.py load_tags
sudo docker-compose exec backend python manage.py load_ingrs
На этом всё, продуктовый помощник запущен, можно наполнять его рецептами и делится с друзьями!
Для Linux ставим Docker как описано выше, для Windows устанавливаем актуальный Docker Desktop.
В папке infra выполняем команду, что бы собрать контейнеры:
sudo docker-compose up -d --build
Остановить:
sudo docker-compose stop
Удалить вместе с volumes:
# Все данные удалятся!
sudo docker-compose down -v
Для доступа к контейнеру выполняем следующие команды:
sudo docker-compose exec backend python manage.py makemigrations
sudo docker-compose exec backend python manage.py migrate --noinput
sudo docker-compose exec backend python manage.py createsuperuser
sudo docker-compose exec backend python manage.py collectstatic --no-input
Дополнительно можно наполнить DB ингредиентами и тэгами:
sudo docker-compose exec backend python manage.py load_tags
sudo docker-compose exec backend python manage.py load_ingrs
При необходимости, но не обязательно, создаем базу и пользователя в PostgreSql (если будет необходимость запустить без Docker):
sudo -u postgres psql
CREATE DATABASE basename;
CREATE USER username WITH ENCRYPTED PASSWORD 'password';
GRANT ALL PRIVILEGES ON DATABASE basename TO username;
http://127.0.0.1/api/docs/
Автор: Клепиков Дмитрий