Проект сайта для размещения рецептов.
- cоздавать рецепт;
- добавлять ингредиенты из БД;
- добавлять понравившиеся рецептыв Избранное;
- подписываться на Авторов;
- добавлять рецепты в Корзину;
- скачивать список ингредиентов, добавленных в корзину рецептов.
- Frontend: React
- Backand: Django REST API
Клонировать репозиторий и перейти в него в командной строке:
git clone [email protected]:sergey-xx/foodgram-project-react.git
- установить Docker,
- в корневой папке проекта выполнить:
docker compose up
Выполнить в консоли команду:
docker container exec foodgram-project-react-backend-1 python manage.py migrate
Для создания суперпользователя выполнить команду:
docker container exec -it foodgram-project-react-backend-1 python manage.py createsuperuser --username admin --email [email protected]
Для импорта базы ингредиентов выполнить команду:
docker container exec foodgram-project-react-backend-1 python manage.py import
- Фронт будет доступен по адресу: http://localhost:8021/
- Админка: http://localhost:8021/admin/
- API: http://localhost:8021/api/
- В папке /backend создать и активировать виртуальное окружение:
python3 -m venv env
source env/bin/activate
- Установить зависимости из файла requirements.txt:
python3 -m pip install --upgrade pip
pip install -r requirements.txt
- Закомментировать postgres DB в settyngs.py, добавить дефолтную SQLite:
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
- Выполнить миграции:
python3 manage.py migrate
- Запуск сервера:
python3 manage.py runserver
- Находясь в директории infra, выполнить команду:
docker compose up
После запуска контейнера nginx Фронт будет доступен по адресу: http://localhost
Документацию на API можно будет увидеть по адресу: http://localhost/api/docs/redoc.html
- Установить Docker
- Установить Веб-сервер: Nginx
- Создать файл .env (см. образец env.example)
- загрузить в ту же папку docker-compose.production.yml
- выполнить
sudo docker compose -f docker-compose.production.yml up -d
Настройка внешнего Nginx для этого проекта:
sudo nano /etc/nginx/sites-enabled/default
server {
server_name 111.111.111.111; # IP-адрес вашего сервера
listen 80;
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://localhost:8031;
}
}
- foodgram_gateway - Nginx Web-сервер.
- foodgram_backend - Gunicorn-сервер.
- postgres:13.10 - Сервер базы данных.
- foodgram_frontend - Сборщик статики Node.js.
- DOCKER_USERNAME (имя пользователя DockerHub)
- DOCKER_PASSWORD (пароль DockerHub)
- HOST (IP VPS-сервера)
- USER (Имя пользователя VPS-сервера)
- SSH_KEY (Закрытый ключ VPS-сервера)
- SSH_PASSPHRASE (Пароль VPS-сервера)
- TELEGRAM_TOKEN (Токен Телеграм-канала для уведомлений)
- TELEGRAM_TO (ID пользователя Телеграм)
- github_username: sergey-xx
- fodmram_domain: https://tastygram.ddns.net
- dockerhub_username: sergeyxx