diff --git a/pom.xml b/pom.xml index 6253b12..c944f7c 100755 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ guru.springframework spring-boot-docker - 0.0.1-SNAPSHOT + 0.0.3-SNAPSHOT jar spring-boot-docker @@ -21,9 +21,21 @@ UTF-8 1.8 + + + springframeworkguru + + + springbootdocker + + + guru.springframework + page-view-client + 0.0.2 + org.springframework.boot spring-boot-starter-thymeleaf @@ -32,7 +44,6 @@ org.springframework.boot spring-boot-starter-web - org.springframework.boot spring-boot-devtools @@ -52,6 +63,68 @@ 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}/target/dockerfile/ + + + + artifact + + + latest + ${project.version} + + + + + 8080:8080 + + + + + + + + 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/DockerfileTemplate b/src/main/docker/DockerfileTemplate new file mode 100644 index 0000000..8b051c7 --- /dev/null +++ b/src/main/docker/DockerfileTemplate @@ -0,0 +1,6 @@ +FROM openjdk + +VOLUME /tmp +ADD maven/${fileName}.jar ${fileName}.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/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 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