Информационная система йогатерапевта.
Данный проект является иллюстрацией кодовой базы, выполненной в соответствии с Эргономичным подходом.
Посты с описанием проекта можно найти у меня в блоге и Telegram-канале.
- JDK: 21 (Temurin)
- PostgreSQL 15.2
- Docker
- Docker Compose
Разработку рекомендуется вести преимущественно через TDD - то есть реализация продового кода ведётся в рамках " озеленения" теста.
Опционально можно руками запустить инфраструктуру для тестов c помощью IDEA Run Configuration (далее - ран конфига) " Infra - Tests - Up":
Это позволит сэкономить полсекунды на запуск тестов, за счёт пропуска инициализации testcontainers.
Вообще у IDEA есть специализированные ран конфиги для Docker Compose, но у меня идея крэшится при их использовании
Остановить инфраструктуру можно ран конфигом "Infra - Tests - Down".
В случае простых/небольших фич и багфиксов можно ограничиться запуском одного класса или теста через гуттер
Если изменения затрагивают несколько частей системы, их разработку можно драйвить с помощью ран конфига "Tests - Fast":
Эта конфигурация запускает все тесты, не отмеченные тегом "slow" и её есть смысл запускать, если в рамках решения задачи, был затронут большой процент кода проекта.
Если разработка совсем вышла из-под контроля и починка одного теста влечёт падение другого, то лучше перейти на ран конфиг "Tests - All":
Отладка и тестирования вёрстки и динамических частей страниц выполняется в ручном режиме, поэтому для этих целей необходимо запустить проект с помощью ран конфига "QYogaApp":
В проекте настроена интеграция Spring Boot Docker Compose, поэтому для запуска проекта достаточно запустить только само приложение в IDEA.
При изменении статических файлов (и, зачастую, кода) для их обновления не обязательно перезапускать приложение и достаточно только пересобрать проект (Ctrl+F9).
При необходимости, остановить инфраструктуру можно ран конфигом "Infra - Dev - Down":
Для отладки работы приложения в докере можно воспользоваться ран конфигом "System - Local - Up":
Этот конфиг выполняет сборку приложения в jar-файл (из текущего состояния рабочей директории), после чего собирает докер-контейнер на базе этого файла и затем в терминале запускает композ всей системы.
Композ запускается в интерактивном режиме, поэтому для остановки надо в консоли ввести Ctrl+c.
Перед пушем рекомендуется запускать Gradle-таск check. Этот таск выполняет все тесты и проверяет процент покрытия кода тестами. Для запуска таска можно воспользоваться ран конфигом "Tests - Check":
Для запуска проекта необходимо в корне проекта (репозитория) выполнить команду:
docker compose -f deploy/qyoga/docker-compose-infra-base.yml -f deploy/qyoga/docker-compose-front-dev.yml up --build app
При первом запуске будут длительные задержки - это качаяются зависимости. Повторые запуски будут проходить быстро.
В случае успешного запуска, в логах докера должна появиться строка
pro.qyoga.app.QYogaAppKt - Started QYogaAppKt in 1.938 seconds (process running for 2.224)
После этого приложение будет доступно по URL http://localhost:8080, а все изменения в HTML/CSS/JavaScript в директории src/main/resources будут видимы сразу после сохранения файла.
Для того чтобы обновить бэк в контейнере (напирмер, после переключения ветки), необходимо удалить старый компоуз-проект:
docker compose -f deploy/qyoga/docker-compose-infra-base.yml -f deploy/qyoga/docker-compose-front-dev.yml down
После чего запустить контейнер заново
Перед работой с продом на новой машине необходимо выполнить шаги из раздела "Сетап хоста"
Для деплоя актуальной версии приложения необходимо выполнить скрипт:
deploy/host/deploy.sh
Этот скрипт подключится к серверу, загрузит последний образ приложения и задеплоит его.
deploy/host/logs.sh
deploy/host/update-cert.sh
deploy/host/setup-host.sh
deploy/host/setup-server.sh