Проект развернут по адресу: http://localhost:8000/redoc/
Проект YaMDb собирает отзывы пользователей на произведения. Произведения делятся на категории:«Книги», «Фильмы», «Музыка». Список категорий может быть расширен (например, можно добавить категорию «Изобразительное искусство» или «Ювелирка»). Настроика для приложения Continuous Integration и Continuous Deployment, реализация:
- автоматический запуск тестов,
- обновление образов на Docker Hub,
- автоматический деплой на боевой сервер при пуше в главную ветку main.
Стек:
- Django 4.1.1
- DRF 3.14.0
- djangorestframework-simplejwt 5.2.1
- psycopg2-binary 2.9.3
- PyJWT 2.5.0
Все описанное ниже относится к ОС Linux.
git clone git@github.com:themasterid/yamdb_final.git
cd yamdb_final
python3 -m venv venv
- Windows:
source venv/Scripts/activate
- Linux:
source venv/bin/activate
python -m pip install --upgrade pip
pip install -r api_yamdb/requirements.txt
cd infra
Предварительно установим Docker на ПК под управлением Linux (Ubuntu 22.10), для Windows немного иная установка, тут не рассматриваем:
sudo apt update && apt upgrade -y
sudo apt remove docker
sudo apt install docker.io
docker --version
sudo systemctl enable docker
sudo systemctl start docker
sudo systemctl status docker
sudo docker run hello-world
sudo apt install postgresql postgresql-contrib -y
DB_ENGINE=django.db.backends.postgresql
DB_NAME=postgres
POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgres
DB_HOST=db
DB_PORT=5432
sudo dpkg-reconfigure locales
Generating locales (this might take a while)...
...
ru_RU.UTF-8... done
...
Generation complete.
sudo reboot
sudo apt install postgresql postgresql-contrib -y
- Остановить
sudo systemctl stop postgresql
- Запустить
```bash
sudo systemctl start postgresql
- Перезапустить
sudo systemctl restart postgresql
- Узнать статус, текущее состояние
sudo systemctl status postgresql
sudo -u postgres psql
CREATE DATABASE test_base;
CREATE USER test_user WITH ENCRYPTED PASSWORD 'test_pass';
GRANT ALL PRIVILEGES ON DATABASE test_base TO test_user;
pip install psycopg2-binary
pip install python-dotenv
from dotenv import load_dotenv
load_dotenv()
...
DATABASES = {
'default': {
'ENGINE': os.getenv('DB_ENGINE', 'django.db.backends.postgresql'),
'NAME': os.getenv('DB_NAME'),
'USER': os.getenv('POSTGRES_USER'),
'PASSWORD': os.getenv('POSTGRES_PASSWORD'),
'HOST': os.getenv('DB_HOST'),
'PORT': os.getenv('DB_PORT')
}
}
touch .env
nano .env
DB_ENGINE=django.db.backends.postgresql
DB_NAME=test_base
POSTGRES_USER=test_user
POSTGRES_PASSWORD=test_pass
DB_HOST=127.0.0.1
DB_PORT=5432
python manage.py migrate
Поднимаем контейнеры ( infra_db - база, infra_web - веб, nfra_nginx - nginx сервер возможно пригодится команда sudo systemctl stop nginx если запускаете в DEV режиме на ПК):
sudo docker-compose up -d --build
sudo docker-compose exec web python manage.py makemigrations reviews
sudo docker-compose exec web python manage.py migrate --run-syncdb
docker-compose exec web python manage.py createsuperuser
docker-compose exec web python manage.py collectstatic --no-input
docker-compose exec web python manage.py dumpdata > dumpPostrgeSQL.json
docker-compose down -v
DB_ENGINE=django.db.backends.postgresql
DB_NAME=postgres
POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgres
DB_HOST=db
DB_PORT=5432
Документация доступна по эндпойнту: http://localhost:8000/redoc/