From 43dce19a82c278725c9487ca87dc6d73a77c3747 Mon Sep 17 00:00:00 2001 From: Yuriy Dvorzhetskiy Date: Mon, 5 Jul 2021 02:49:27 +0600 Subject: [PATCH] Fix docker example --- .../docker-compose-example/docker-compose.yml | 11 +- .../spring-32/docker-compose-example/pom.xml | 119 +++++++++--------- .../DockerComposeExampleApplication.java | 4 +- .../ru/otus/spring/docker/model/Person.java | 9 ++ .../spring/docker/rest/PersonController.java | 21 ++++ .../src/main/resources/application.yml | 9 +- .../src/main/resources/static/index.html | 12 ++ 7 files changed, 116 insertions(+), 69 deletions(-) create mode 100644 2021-02/spring-32/docker-compose-example/src/main/java/ru/otus/spring/docker/rest/PersonController.java create mode 100644 2021-02/spring-32/docker-compose-example/src/main/resources/static/index.html diff --git a/2021-02/spring-32/docker-compose-example/docker-compose.yml b/2021-02/spring-32/docker-compose-example/docker-compose.yml index d10b74e9..2bfc1a00 100644 --- a/2021-02/spring-32/docker-compose-example/docker-compose.yml +++ b/2021-02/spring-32/docker-compose-example/docker-compose.yml @@ -7,15 +7,16 @@ services: privileged: true ports: - "8080:8080" + # Эти свойства перегружают соответствующие в application.yml environment: - - DB_DRIVER=org.postgresql.Driver - - DB_URL=jdbc:postgresql://postgres:5432/db - - DB_USERNAME=postgres - - DB_PASSWORD=postgres - - WAIT_FOR=postgres:5432 + - SPRING_DATASOURCE_DRIVER_CLASS_NAME=org.postgresql.Driver + - SPRING_DATASOURCE_URL=jdbc:postgresql://postgres:5432/db + - SPRING_DATASOURCE_USERNAME=postgres + - SPRING_DATASOURCE_PASSWORD=postgres networks: - nw postgres: + # В идеале должна быть ещё и версия image image: "postgres" ports: - "5432:5432" diff --git a/2021-02/spring-32/docker-compose-example/pom.xml b/2021-02/spring-32/docker-compose-example/pom.xml index 34c1bc76..ff5f9c56 100644 --- a/2021-02/spring-32/docker-compose-example/pom.xml +++ b/2021-02/spring-32/docker-compose-example/pom.xml @@ -1,66 +1,69 @@ - 4.0.0 - - org.springframework.boot - spring-boot-starter-parent - 2.3.1.RELEASE - - - ru.otus.spring - docker-compose-example - 0.0.1-SNAPSHOT - docker-compose-example - Demo project for Spring Boot + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 2.5.1 + + + ru.otus.spring + docker-compose-example + 0.0.1-SNAPSHOT + docker-compose-example + Demo project for Spring Boot - - 11 - + + 11 + - - - org.springframework.boot - spring-boot-starter-data-jpa - + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-data-jpa + - - org.postgresql - postgresql - runtime - - - org.projectlombok - lombok - true - - - test - com.h2database - h2 - 1.4.200 - - - org.springframework.boot - spring-boot-starter-test - test - - - org.junit.vintage - junit-vintage-engine - - - - + + org.postgresql + postgresql + runtime + + + org.projectlombok + lombok + true + + + test + com.h2database + h2 + + + org.springframework.boot + spring-boot-starter-test + test + + + org.junit.vintage + junit-vintage-engine + + + + - - - - org.springframework.boot - spring-boot-maven-plugin - - - docker-compose-example - + + + + org.springframework.boot + spring-boot-maven-plugin + + + docker-compose-example + diff --git a/2021-02/spring-32/docker-compose-example/src/main/java/ru/otus/spring/docker/DockerComposeExampleApplication.java b/2021-02/spring-32/docker-compose-example/src/main/java/ru/otus/spring/docker/DockerComposeExampleApplication.java index 88d60039..76f60e7d 100644 --- a/2021-02/spring-32/docker-compose-example/src/main/java/ru/otus/spring/docker/DockerComposeExampleApplication.java +++ b/2021-02/spring-32/docker-compose-example/src/main/java/ru/otus/spring/docker/DockerComposeExampleApplication.java @@ -15,8 +15,8 @@ public class DockerComposeExampleApplication { //Код для примера, делать так конечно нельзя :) ApplicationContext context = SpringApplication.run(DockerComposeExampleApplication.class, args); PersonRepository repository = context.getBean(PersonRepository.class); - repository.save(new Person(1, "Ivan", "Ivanov")); - System.out.println(repository.findById(1)); + repository.save(new Person("Ivan", "Ivanov")); + System.out.println(repository.findAll()); } } diff --git a/2021-02/spring-32/docker-compose-example/src/main/java/ru/otus/spring/docker/model/Person.java b/2021-02/spring-32/docker-compose-example/src/main/java/ru/otus/spring/docker/model/Person.java index 596a8923..9c55909b 100644 --- a/2021-02/spring-32/docker-compose-example/src/main/java/ru/otus/spring/docker/model/Person.java +++ b/2021-02/spring-32/docker-compose-example/src/main/java/ru/otus/spring/docker/model/Person.java @@ -5,6 +5,8 @@ import lombok.Data; import lombok.NoArgsConstructor; import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; import javax.persistence.Id; @Data @@ -12,8 +14,15 @@ import javax.persistence.Id; @AllArgsConstructor @NoArgsConstructor public class Person { + + @GeneratedValue(strategy = GenerationType.AUTO) @Id private Integer id; private String name; private String lastName; + + public Person(String name, String lastName) { + this.name = name; + this.lastName = lastName; + } } diff --git a/2021-02/spring-32/docker-compose-example/src/main/java/ru/otus/spring/docker/rest/PersonController.java b/2021-02/spring-32/docker-compose-example/src/main/java/ru/otus/spring/docker/rest/PersonController.java new file mode 100644 index 00000000..4cfc6436 --- /dev/null +++ b/2021-02/spring-32/docker-compose-example/src/main/java/ru/otus/spring/docker/rest/PersonController.java @@ -0,0 +1,21 @@ +package ru.otus.spring.docker.rest; + +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; +import ru.otus.spring.docker.model.Person; +import ru.otus.spring.docker.repository.PersonRepository; + +import java.util.List; + +@RestController +@RequiredArgsConstructor +public class PersonController { + + private final PersonRepository repository; + + @GetMapping("/api/persons") + public List getAllPersons() { + return this.repository.findAll(); + } +} diff --git a/2021-02/spring-32/docker-compose-example/src/main/resources/application.yml b/2021-02/spring-32/docker-compose-example/src/main/resources/application.yml index eb1c8991..f691ddc3 100644 --- a/2021-02/spring-32/docker-compose-example/src/main/resources/application.yml +++ b/2021-02/spring-32/docker-compose-example/src/main/resources/application.yml @@ -1,8 +1,9 @@ spring: datasource: - driver-class-name: ${DB_DRIVER} - url: ${DB_URL} - username: ${DB_USERNAME} - password: ${DB_PASSWORD} + # Эти свойства будут перегружены свойствами в docker-compose.yml + driver-class-name: org.postgresql.Driver + url: jdbc:postgresql://localhost:5432/db + username: postgre + password: postgres jpa: generate-ddl: true diff --git a/2021-02/spring-32/docker-compose-example/src/main/resources/static/index.html b/2021-02/spring-32/docker-compose-example/src/main/resources/static/index.html new file mode 100644 index 00000000..a80ea187 --- /dev/null +++ b/2021-02/spring-32/docker-compose-example/src/main/resources/static/index.html @@ -0,0 +1,12 @@ + + + + + Главная страницв + + +

Главная страница

+

Список всех лиц доступен по ссылке.

+

Перезапустив приложение можно добавить ещё в БД.

+ +