project for training, which use
- java
- spring
- spring boot
- spring data jpa
- hibernate
- mupstruct
- jakarta-validation
- lombok
db -> repository -> service -> controller (для сущности dog в контроллере используем dao + mapper)
- запустить бд mysql в докере с настройками, указанными в application.yml т.е. создать бд с именем testdb, логином (root) и паролем (password). Создавать таблицы в бд не нужно, hibernate сделает это сам
- если все ок, приложение стартует без ошибок
- теперь можно подергать рестики, например в postman здесь указаны URL'лы для сущности dog, для cat см. в классе CatController.java
GET
http://localhost:8080/dog/1
GET (get all)
http://localhost:8080/dog
POST
{
"name": "Fluffy",
"age": 4
}PUT
{
"name": "YoungFluffy",
"age": 2
}DELETE
работа с сущностью cat максимально примитивная
работа с сущностью dog уже по-сложнее - используется dto+маппинг при помощи mapstruct
- настраивается в application.yml
- чтобы попасть в актуатор, после запуска приложения перейди по ссылке
http://localhost:8080/actuator - документация по настройкам тут
- в pom.xml поменять
<packaging>jar</packaging>или<packaging>war</packaging> - запустить mvn clean package -DskipTests
- .jar или .war появиться в target
- скопитовать .jar-файл из target (например, в Desktop)
- выполнить в консоли
java -jar ".\app-name.jar"
сейчас из зависимых контейнеров есть только mysql, поэтому нужно добавить его в общую сеть:
- раскоментировать в application.yml строку:
url: jdbc:mysql://mysql-container:3306/testdb?allowPublicKeyRetrieval=true - создать сеть с именем my-network
docker network create my-network - запустить mysql-контейнер в созданной сети
docker run --name mysql-container --network my-network -e MYSQL_ROOT_PASSWORD=password -e MYSQL_DATABASE=testdb -p 3306:3306 -d mysql - собрать training-project
mvn clean package -DSkipTests - собрать docker-image
docker build -t training-project . - запустить docker-контейнер в созданной сети
docker run --name training-project-container --network my-network -p 8080:8080 -e SPRING_PROFILES_ACTIVE=dev training-project