From ca3964fad4287f540ddee77c58224016966971c3 Mon Sep 17 00:00:00 2001 From: John Thompson Date: Tue, 21 Feb 2017 17:06:42 -0500 Subject: [PATCH 1/5] adding fabric8 Maven Plugin --- pom.xml | 37 +++++++++++++++++++++++++++++++++++++ src/main/docker/Dockerfile | 6 ++++++ 2 files changed, 43 insertions(+) create mode 100644 src/main/docker/Dockerfile diff --git a/pom.xml b/pom.xml index 6253b12..559fa8c 100755 --- a/pom.xml +++ b/pom.xml @@ -21,6 +21,13 @@ UTF-8 1.8 + + + springframeworkguru + + + springbootdocker + @@ -52,6 +59,36 @@ org.springframework.boot spring-boot-maven-plugin + + io.fabric8 + docker-maven-plugin + 0.20.0 + + + + + unix:///var/run/docker.sock + + true + + + ${docker.image.prefix}/${docker.image.name} + + ${project.basedir}/src/main/docker/ + + + + artifact + + + latest + ${project.version} + + + + + + diff --git a/src/main/docker/Dockerfile b/src/main/docker/Dockerfile new file mode 100644 index 0000000..e16f2ea --- /dev/null +++ b/src/main/docker/Dockerfile @@ -0,0 +1,6 @@ +FROM openjdk + +VOLUME /tmp +ADD maven/spring-boot-docker-0.0.1-SNAPSHOT.jar myapp.jar +RUN sh -c 'touch /myapp.jar' +ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/myapp.jar"] From 8fbe50c1bf4263f6ee2f97123cec5bd930b21304 Mon Sep 17 00:00:00 2001 From: John Thompson Date: Tue, 21 Feb 2017 17:44:18 -0500 Subject: [PATCH 2/5] made maven release --- pom.xml | 2 +- src/main/docker/Dockerfile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 559fa8c..b77347d 100755 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ guru.springframework spring-boot-docker - 0.0.1-SNAPSHOT + 0.0.2-SNAPSHOT jar spring-boot-docker diff --git a/src/main/docker/Dockerfile b/src/main/docker/Dockerfile index e16f2ea..2c5dd55 100644 --- a/src/main/docker/Dockerfile +++ b/src/main/docker/Dockerfile @@ -1,6 +1,6 @@ FROM openjdk VOLUME /tmp -ADD maven/spring-boot-docker-0.0.1-SNAPSHOT.jar myapp.jar +ADD maven/spring-boot-docker-0.0.2-SNAPSHOT.jar myapp.jar RUN sh -c 'touch /myapp.jar' ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/myapp.jar"] From 3a1fd1707fc5a3e59d591b16df99863317ca99dd Mon Sep 17 00:00:00 2001 From: John Thompson Date: Tue, 21 Feb 2017 18:45:49 -0500 Subject: [PATCH 3/5] added dockertemplate --- pom.xml | 31 +++++++++++++++++-- .../docker/{Dockerfile => DockerfileTemplate} | 4 +-- src/main/scripts/BuildDockerfile.groovy | 14 +++++++++ 3 files changed, 45 insertions(+), 4 deletions(-) rename src/main/docker/{Dockerfile => DockerfileTemplate} (61%) create mode 100644 src/main/scripts/BuildDockerfile.groovy diff --git a/pom.xml b/pom.xml index b77347d..80d4570 100755 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ guru.springframework spring-boot-docker - 0.0.2-SNAPSHOT + 0.0.3-SNAPSHOT jar spring-boot-docker @@ -74,7 +74,7 @@ ${docker.image.prefix}/${docker.image.name} - ${project.basedir}/src/main/docker/ + ${project.basedir}/target/dockerfile/ @@ -89,6 +89,33 @@ + + org.codehaus.gmavenplus + gmavenplus-plugin + 1.5 + + + prepare-package + + execute + + + + + + + + + + + org.codehaus.groovy + groovy-all + + 2.4.8 + runtime + + + diff --git a/src/main/docker/Dockerfile b/src/main/docker/DockerfileTemplate similarity index 61% rename from src/main/docker/Dockerfile rename to src/main/docker/DockerfileTemplate index 2c5dd55..91dccbe 100644 --- a/src/main/docker/Dockerfile +++ b/src/main/docker/DockerfileTemplate @@ -1,6 +1,6 @@ FROM openjdk VOLUME /tmp -ADD maven/spring-boot-docker-0.0.2-SNAPSHOT.jar myapp.jar +ADD maven/${fileName}.jar ${fileName}.jar RUN sh -c 'touch /myapp.jar' -ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/myapp.jar"] +ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/${fileName}.jar"] \ No newline at end of file diff --git a/src/main/scripts/BuildDockerfile.groovy b/src/main/scripts/BuildDockerfile.groovy new file mode 100644 index 0000000..5fc73e5 --- /dev/null +++ b/src/main/scripts/BuildDockerfile.groovy @@ -0,0 +1,14 @@ +String template = new File("${project.basedir}/src/main/docker/DockerfileTemplate".toString()).getText() + +def dockerFileText = new groovy.text.SimpleTemplateEngine().createTemplate(template) + .make([fileName: project.build.finalName]) + +println "writing dir " + "${project.basedir}/target/dockerfile" +new File("${project.basedir}/target/dockerfile/".toString()).mkdirs() + +println "writing file" +File dockerFile = new File("${project.basedir}/target/dockerfile/Dockerfile".toString()) + +dockerFile.withWriter('UTF-8') { writer -> + writer.write(dockerFileText) +} \ No newline at end of file From 154f2d272e1d8ecea8d2df23001a46f272856f07 Mon Sep 17 00:00:00 2001 From: John Thompson Date: Tue, 21 Feb 2017 19:48:12 -0500 Subject: [PATCH 4/5] added docker run config --- pom.xml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pom.xml b/pom.xml index 80d4570..d030ded 100755 --- a/pom.xml +++ b/pom.xml @@ -85,6 +85,11 @@ ${project.version} + + + 8080:8080 + + From 5dee1e810b38c8dcfdf4d61848c4201adbb9e771 Mon Sep 17 00:00:00 2001 From: John Thompson Date: Wed, 8 Mar 2017 11:47:52 -0500 Subject: [PATCH 5/5] added docker run config --- pom.xml | 6 +++++- src/main/docker/DockerfileTemplate | 2 +- .../controllers/ProductController.java | 17 ++++++++++++++++- src/main/resources/application.properties | 1 + src/main/scripts/dockercommands.txt | 19 +++++++++++++++++++ 5 files changed, 42 insertions(+), 3 deletions(-) create mode 100644 src/main/scripts/dockercommands.txt diff --git a/pom.xml b/pom.xml index d030ded..c944f7c 100755 --- a/pom.xml +++ b/pom.xml @@ -31,6 +31,11 @@ + + guru.springframework + page-view-client + 0.0.2 + org.springframework.boot spring-boot-starter-thymeleaf @@ -39,7 +44,6 @@ org.springframework.boot spring-boot-starter-web - org.springframework.boot spring-boot-devtools diff --git a/src/main/docker/DockerfileTemplate b/src/main/docker/DockerfileTemplate index 91dccbe..8b051c7 100644 --- a/src/main/docker/DockerfileTemplate +++ b/src/main/docker/DockerfileTemplate @@ -2,5 +2,5 @@ FROM openjdk VOLUME /tmp ADD maven/${fileName}.jar ${fileName}.jar -RUN sh -c 'touch /myapp.jar' +RUN sh -c 'touch /${fileName}' ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/${fileName}.jar"] \ No newline at end of file diff --git a/src/main/java/guru/springframework/controllers/ProductController.java b/src/main/java/guru/springframework/controllers/ProductController.java index 8719cf2..5ad7f5b 100755 --- a/src/main/java/guru/springframework/controllers/ProductController.java +++ b/src/main/java/guru/springframework/controllers/ProductController.java @@ -1,5 +1,7 @@ package guru.springframework.controllers; +import guru.springframework.model.events.PageViewEvent; +import guru.springframework.pageview.PageViewService; import guru.springframework.services.ProductService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; @@ -7,6 +9,9 @@ import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; +import java.util.Date; +import java.util.UUID; + /** * Created by jt on 1/20/16. */ @@ -14,10 +19,12 @@ public class ProductController { private ProductService productService; + private PageViewService pageViewService; @Autowired - public ProductController(ProductService productService) { + public ProductController(ProductService productService, PageViewService pageViewService) { this.productService = productService; + this.pageViewService = pageViewService; } @RequestMapping("/product/{id}") @@ -25,6 +32,14 @@ public String getProductById(@PathVariable Integer id, Model model){ model.addAttribute("product", productService.getProduct(id)); + //Send Page view event + PageViewEvent pageViewEvent = new PageViewEvent(); + pageViewEvent.setPageUrl("springframework.guru/product/" + id); + pageViewEvent.setPageViewDate(new Date()); + pageViewEvent.setCorrelationId(UUID.randomUUID().toString()); + + pageViewService.sendPageViewEvent(pageViewEvent); + return "product"; } } diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index e69de29..bf524aa 100755 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -0,0 +1 @@ +spring.rabbitmq.host= \ No newline at end of file diff --git a/src/main/scripts/dockercommands.txt b/src/main/scripts/dockercommands.txt new file mode 100644 index 0000000..71f881c --- /dev/null +++ b/src/main/scripts/dockercommands.txt @@ -0,0 +1,19 @@ +## Use to run mysql db docker image +docker run --name mysqldb -p 3306:3306 -e MYSQL_DATABASE=pageviewservice -e MYSQL_ALLOW_EMPTY_PASSWORD=yes -d mysql + +## Use to run RabbitMQ +docker run --name rabbitmq -p 5671:5671 -p 5672:5672 rabbitmq + +## does not work +docker run --name pageviewservice -p 8081:8081 springframeworkguru/pageviewservice + +## does not work +docker run --name pageviewservice -p 8081:8081 -e SPRING_DATASOURCE_URL=jdbc:mysql://127.0.0.1:3306/pageviewservice -e SPRING_PROFILES_ACTIVE=mysql springframeworkguru/pageviewservice + +docker run --name pageviewservice -p 8081:8081 \ +--link rabbitmq:rabbitmq \ +--link mysqldb:mysqldb \ +-e SPRING_DATASOURCE_URL=jdbc:mysql://mysqldb:3306/pageviewservice \ +-e SPRING_PROFILES_ACTIVE=mysql \ +-e SPRING_RABBITMQ_HOST=rabbitmq \ +springframeworkguru/pageviewservice \ No newline at end of file