API YaMDB - командный проект, поддерживающий обмен данными в формате JSON. Развернут в 3х контейнерах (db, web, nginx) c помощью Docker.
Настроены CI и CD: автоматический запуск тестов (PEP8, Pytest), обновление образов на Docker Hub,автоматический деплой на боевой сервер при пуше в ветку master.
Cистема аутентификация реализована через получение JWT-токена. Функционал API предоставляет следующие ресурсы:
- Произведения
- Категории
- Жанры
- Отзывы
- Комментарии
Технологии:
- Python 3
- Django Rest Framework
- Simple JWT
- PostgreSQL
- Docker
git clone https://github.com/AndreyVnk/yamdb_final.git && cd yamdb_final/
DOCKER_USERNAME=<docker login>
DOCKER_PASSWORD=<docker password>
USER=<server_user>
HOST=<server_ip_address>
SSH_KEY=<public_key> # cat ~/.ssh/id_rsa (linux) на машине имеющей доступ к серверу
TELEGRAM_TO=<chat ID> # для отправки уведомлений в телеграм через бота
TELEGRAM_TOKEN=<bot_token> # для отправки уведомлений в телеграм через бота
SECRET_KEY=secret_django_key
DB_ENGINE=django.db.backends.postgresql # указываем, что работаем с postgresql
DB_NAME=postgres # имя базы данных
POSTGRES_USER=postgres # логин для подключения к базе данных
POSTGRES_PASSWORD=zzzxxxcc # пароль для подключения к БД (установите свой)
DB_HOST=db # название сервиса (контейнера)
DB_PORT=5432 # порт для подключения к БД
server_name <server_ip_address>;
Установите docker и docker-compose
https://docs.docker.com/engine/
scp infra/docker-compose.yaml <user>@<ip_address>:/home/<user>/docker-compose.yaml
scp infra/nginx/default.conf <user>@<ip_address>:/home/<user>/nginx/default.conf
git add .
git commit -m 'something'
git push
sudo docker-compose exec web python manage.py migrate
sudo docker-compose exec web python manage.py collectstatic --no-input
sudo docker-compose exec web python manage.py createsuperuser
sudo docker-compose exec web python manage.py changepassword <username superuser>
Эндпоинты, описанные в документации доступны на корневом адресе проекта: http://<server_ip_address>/api/v1/. Документация к API доступна на http://<server_ip_address>/redoc/.
Пример проекта доступен по http://51.250.16.238/api/v1/ . Документация к API - http://51.250.16.238/redoc/ .
Авторы
AndreyVnk, deorz, idudnikov