Проект YaMDb собирает отзывы (Review) пользователей на произведения (Titles). Произведения делятся на категории: «Книги», «Фильмы», «Музыка». Список категорий (Category) может быть расширен администратором (например, можно добавить категорию «Картины» или «Ювелирка»).
Сами произведения в YaMDb не хранятся, здесь нельзя посмотреть фильм или послушать музыку.
Django 2.2.16
Python 3.10.4
Django REST Framework 3.12.4
Simple-JWT 4.8.0
PostgreSQL 13.0-alpine
Nginx 1.21.3-alpine
Gunicorn 20.0.4
Docker 20.10.17, build 100c701
Docker-compose 3.8
- Для развёртывания проекта необходимо скачать его в нужную вам директорию, например:
git clone [email protected]:sapphirehead/infra_sp2.git
- В директории infra создайте файл .env с переменными окружения для работы с базой данных:
DJANGO_KEY='your Django secret key'
DB_ENGINE=django.db.backends.postgresql # указываем, что работаем с postgresql
DB_NAME=postgres # имя базы данных
POSTGRES_USER=postgres # логин для подключения к базе данных
POSTGRES_PASSWORD=postgres # пароль для подключения к БД (установите свой)
DB_HOST=db # название сервиса (контейнера)
DB_PORT=5432 # порт для подключения к БД
-
Из папки
infra/
разверните контейнеры в новой структуре: -
Для запуска необходимо выполнить из директории с проектом команду:
sudo docker-compose up -d
Для пересборки команда up выполняется с параметром --build
sudo docker-compose up -d --build
- Теперь в контейнере web нужно выполнить миграции:
sudo docker-compose exec web python manage.py migrate
- Создать суперпользователя:
sudo docker-compose exec web python manage.py createsuperuser
- Собрать статику:
sudo docker-compose exec web python manage.py collectstatic --no-input
- Вы также можете создать дамп (резервную копию) базы:
sudo docker-compose exec web python manage.py dumpdata > fixtures.json
- или, разместив, например, файл fixtures.json в папке с Dockerfile, загрузить в базу данные из дампа:
sudo docker-compose exec web python manage.py loaddata fixtures.json
- Локально создать образ с нужным названием и тегом:
docker build -t <username>/<imagename>:<tag> .
-
Авторизоваться через консоль:
docker login
-
А можно сразу указать имя пользователя
docker login -u <username>
-
Загрузить образ на DockerHub:
docker push <username>/<imagename>:<tag>
-
Проверить файлы в корне проекта:
sudo docker-compose exec web ls -a
- Остановка всех контейнеров:
sudo docker-compose down
- Мониторинг запущенных контейнеров:
sudo docker stats
- Команда покажет, сколько места на диске занимают образы, контейнеры, тома и билд-кеш.
sudo docker system df
- Останавливаем и удаляем контейнеры, сети, тома вместе со всеми зависимостями. Осталются только образы:
sudo docker-compose down -v
- Остановить проект сохранив данные в БД:
docker-compose down
- Остановить проект удалив данные в БД:
docker-compose down --volumes
- Удалить всё, что не используется (неиспользуемые образы, остановленные контейнеры, тома, которые не использует ни один контейнер, билд-кеш)
sudo docker system prune
Документация: Примеры обращений к эндпоинтам находятся по адресу:
Разработчики:
- Абакумов Максим (категории (Categories), жанры (Genres) и произведения (Titles): модели, представления и эндпойнты для них),
- Андреев Ярослав (система регистрации и аутентификации, права доступа, работа с токеном, система подтверждения через e-mail.),
- Быков Евгений (функционал отзывов (Review) и комментариев (Comments): описывал модели, представления, настраивал эндпойнты, определял права доступа для запросов. Писал функционал рейтингов произведений.