diff --git a/Dockerfile b/Dockerfile index a79df60..564b414 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,9 +1,9 @@ -FROM java:8 +FROM maven:3-jdk-8 MAINTAINER Patrick Chanezon EXPOSE 8080 - -COPY spring-doge/target/*.jar /usr/src/spring-doge/spring-doge.jar WORKDIR /usr/src/spring-doge -CMD java -Dserver.port=8080 -Dspring.data.mongodb.uri=$MONGODB_URI -jar spring-doge.jar \ No newline at end of file +COPY . /usr/src/spring-doge +RUN mvn install && cp spring-doge/target/*.jar spring-doge.jar +CMD java -Dserver.port=8080 -Dspring.data.mongodb.uri=$MONGODB_URI -jar spring-doge.jar diff --git a/Dockerfile.dev b/Dockerfile.dev new file mode 100644 index 0000000..a79df60 --- /dev/null +++ b/Dockerfile.dev @@ -0,0 +1,9 @@ +FROM java:8 + +MAINTAINER Patrick Chanezon + +EXPOSE 8080 + +COPY spring-doge/target/*.jar /usr/src/spring-doge/spring-doge.jar +WORKDIR /usr/src/spring-doge +CMD java -Dserver.port=8080 -Dspring.data.mongodb.uri=$MONGODB_URI -jar spring-doge.jar \ No newline at end of file diff --git a/README.md b/README.md index 4aefad6..0be77ff 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,6 @@ # Spring Doge - Such Boot! + ``` cf push -p target/demo-0.0.1-SNAPSHOT.jar -b https://github.com/cloudfoundry/java-buildpack.git doge @@ -11,7 +12,23 @@ https://gist.github.com/relaxdiego/7539911 https://github.com/pivotal-cf/java-8-buildpack/blob/master/docs/example-java_main.md -## Building and running with Docker +## Building and running the application using docker and docker-compose + +The maven build for this project integrates with Docker using the [Spotify Maven plugin](https://github.com/spotify/docker-maven-plugin). You need to have Docker installed and configured. See [Installing Docker](https://docs.docker.com/installation/). + +In order to build a docker image: +``` +mvn package +``` + +You can customize the Docker Hub user for your image (by default it will create chanezon/spring-doge) in spring-doge/pom.xml. + +Then to run the app: +``` +docker-compose -f spring-doge/target/docker-compose.yml up +``` + +## Old Building and running with Docker You can use STS or a locally installation of maven to build spring-doge. However, if you need to build that on a new machine where you don't have all your development environment setup, you can build it with the maven Docker container. @@ -23,7 +40,7 @@ This will create the spring-doge jar file in target. Then, you can build a container for the app and run the app and a Mongodb database in containers with the following commands: ``` -docker build -t chanezon/spring-doge . +docker build -t foo/spring-doge . docker-compose up ``` diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml new file mode 100644 index 0000000..9448a50 --- /dev/null +++ b/docker-compose.prod.yml @@ -0,0 +1,12 @@ +web: + image: chanezon/spring-doge + ports: + - 8080 + links: ["mongo"] + environment: + - MONGODB_URI=mongodb://mongo:27017/test + labels: + - "interlock.hostname=spring-doge" + - "interlock.domain=chanezon.com" +mongo: + image: mongo diff --git a/docker-compose.run.yml b/docker-compose.run.yml new file mode 100644 index 0000000..25c748c --- /dev/null +++ b/docker-compose.run.yml @@ -0,0 +1,9 @@ +web: + image: chanezon/spring-doge + ports: + - "8080:8080" + links: ["mongo"] + environment: + - MONGODB_URI=mongodb://mongo:27017/test +mongo: + image: mongo diff --git a/docker-compose.yml b/docker-compose.yml index 25c748c..51c2ded 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,9 +1,13 @@ web: - image: chanezon/spring-doge + image: chanezon/sts:3.7.5 + volumes: + - ./..:/workspace + - maven:/root/.m2 ports: - - "8080:8080" + - "8090:8080" links: ["mongo"] environment: + - DISPLAY=$DISPLAY_MAC - MONGODB_URI=mongodb://mongo:27017/test mongo: image: mongo diff --git a/pom.xml b/pom.xml index 5861ba9..ce1cba0 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.springframework.boot spring-boot-starter-parent - 1.2.0.M1 + 1.3.0.M2 io.spring.doge spring-doge-parent diff --git a/spring-doge-web/src/main/resources/templates/client.html b/spring-doge-web/src/main/resources/templates/client.html index 8031709..4780b01 100644 --- a/spring-doge-web/src/main/resources/templates/client.html +++ b/spring-doge-web/src/main/resources/templates/client.html @@ -19,7 +19,7 @@
-

Upload an Image

+

Upload an Image and have fun!

Open the monitor page diff --git a/spring-doge/pom.xml b/spring-doge/pom.xml index b454636..1d61211 100644 --- a/spring-doge/pom.xml +++ b/spring-doge/pom.xml @@ -1,75 +1,106 @@ - 4.0.0 - - io.spring.doge - spring-doge-parent - 0.0.1-SNAPSHOT - + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + 4.0.0 + + io.spring.doge + spring-doge-parent + 0.0.1-SNAPSHOT + jar - spring-doge - spring-doge - - ${basedir}/.. - - - - org.springframework.boot - spring-boot-starter-cloud - - - ${project.groupId} - spring-doge-photo - ${project.version} - - - ${project.groupId} - spring-doge-web - ${project.version} - - - com.codahale.metrics - metrics-graphite - - - org.springframework.boot - spring-boot-starter-remote-shell - - - org.springframework.boot - spring-boot-starter-actuator - - - org.springframework.boot - spring-boot-starter-web - - - org.springframework.boot - spring-boot-starter-data-mongodb - - - org.springframework.boot - spring-boot-starter-websocket - - - org.apache.httpcomponents - httpcore - 4.3.1 - - - org.springframework.boot - spring-boot-starter-test - test - - - - spring-doge - - - org.springframework.boot - spring-boot-maven-plugin - - - + spring-doge + spring-doge + + chanezon + ${basedir}/.. + + + + + ${project.groupId} + spring-doge-photo + ${project.version} + + + ${project.groupId} + spring-doge-web + ${project.version} + + + io.dropwizard.metrics + metrics-graphite + ${dropwizard-metrics.version} + + + org.springframework.boot + spring-boot-starter-remote-shell + + + org.springframework.boot + spring-boot-starter-actuator + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-data-mongodb + + + org.springframework.boot + spring-boot-starter-websocket + + + org.apache.httpcomponents + httpcore + 4.3.1 + + + org.springframework.boot + spring-boot-starter-test + test + + + + spring-doge + + + src/main/docker + true + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + maven-resources-plugin + 2.7 + + + copy-resources + + package + + copy-resources + + + ${basedir}/target + + + ${project.basedir}/src/main/docker + *.yml + true + + + + + + + + + diff --git a/spring-doge/src/main/docker/Dockerfile b/spring-doge/src/main/docker/Dockerfile new file mode 100644 index 0000000..64137d8 --- /dev/null +++ b/spring-doge/src/main/docker/Dockerfile @@ -0,0 +1,9 @@ +FROM java:8 + +MAINTAINER Patrick Chanezon + +EXPOSE 8080 + +WORKDIR /usr/src +ADD spring-doge.jar app.jar +CMD java -Dserver.port=8080 -Dspring.data.mongodb.uri=$MONGODB_URI -jar app.jar diff --git a/spring-doge/src/main/docker/docker-compose.yml b/spring-doge/src/main/docker/docker-compose.yml new file mode 100644 index 0000000..b0b1b97 --- /dev/null +++ b/spring-doge/src/main/docker/docker-compose.yml @@ -0,0 +1,10 @@ +mongo: + image: mongo + +web: + image: ${docker.image.prefix}/${project.artifactId} + ports: + - "8080:8080" + links: ["mongo"] + environment: + - MONGODB_URI=mongodb://mongo:27017/test