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