diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..0fa92a0 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,2 @@ +target +.ufo diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..908ca59 --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +pkg +target +*.class +.ufo/current +.ufo/data +.ufo/log +.ufo/output diff --git a/POM.xml b/POM.xml new file mode 100644 index 0000000..40a0409 --- /dev/null +++ b/POM.xml @@ -0,0 +1,46 @@ + + 4.0.0 + com.domain + demo + war + 1.0-SNAPSHOT + Demo Maven Webapp + https://github.com/tongueroo/demo-java + + demo + src + + + maven-compiler-plugin + 3.7.0 + + 1.8 + 1.8 + + + + maven-war-plugin + 3.0.0 + + + + + + junit + junit + 3.8.1 + test + + + log4j + log4j + 1.2.17 + + + javax.servlet + javax.servlet-api + 3.1.0 + + + diff --git a/README.md b/README.md new file mode 100644 index 0000000..893f217 --- /dev/null +++ b/README.md @@ -0,0 +1,7 @@ +# Demo Java Web App + +[![BoltOps Badge](https://img.boltops.com/boltops/badges/boltops-badge.png)](https://www.boltops.com) + +Simple java project demos how to build a war file to be deployed on a Tomcat server. + +## Build diff --git a/bin/build b/bin/build new file mode 100644 index 0000000..a0cbda4 --- /dev/null +++ b/bin/build @@ -0,0 +1,12 @@ +#!/bin/bash -exu + +# brew install maven # for macosx +mvn package +# move the artifact into pkg so we do not have to send the whole target file +# to the docker build context. We will dockerignore target. +mvn package # creates target/demo.war +# Move the artifact into pkg so we do not have to send the whole target file +# to the docker build context. We will dockerignore target because it contains +# other build files that bloats the upload context sent to docker. +mkdir -p pkg +mv target/demo.war pkg/demo.war diff --git a/dockerfile b/dockerfile new file mode 100644 index 0000000..9c40fcd --- /dev/null +++ b/dockerfile @@ -0,0 +1,17 @@ +FROM tomcat:8.5 +MAINTAINER Tung Nguyen + +# Debugging tools: A few ways to handle debugging tools. +# Trade off is a slightly more complex volume mount vs keeping the image size down. +RUN apt-get update && \ + apt-get install -y \ + net-tools \ + tree \ + vim && \ + rm -rf /var/lib/apt/lists/* && apt-get clean && apt-get purge + +RUN echo "export JAVA_OPTS=\"-Dapp.env=staging\"" > /usr/local/tomcat/bin/setenv.sh +COPY pkg/demo.war /usr/local/tomcat/webapps/demo.war + +EXPOSE 8080 +CMD ["catalina.sh", "run"] diff --git a/src/main/java/Hello.java b/src/main/java/Hello.java new file mode 100644 index 0000000..b49dec7 --- /dev/null +++ b/src/main/java/Hello.java @@ -0,0 +1,26 @@ +// Import required java libraries +import java.io.*; +import javax.servlet.*; +import javax.servlet.http.*; + +// Extend HttpServlet class +public class Hello extends HttpServlet { + + private String message; + + public void init() throws ServletException { + // Do required initialization + message = "Hello World: src/main/java/Hello.java"; + } + + public void doGet(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + + // Set response content type + response.setContentType("text/html"); + + // Actual logic goes here. + PrintWriter out = response.getWriter(); + out.println("

" + message + "

"); + } +} diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000..bca72b7 --- /dev/null +++ b/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,25 @@ + + + + demo java web app + + index.html + index.htm + index.jsp + default.html + default.htm + default.jsp + + + + Hello + Hello + + + Hello + /Hello + + + diff --git a/src/main/webapp/index.jsp b/src/main/webapp/index.jsp new file mode 100644 index 0000000..8d86027 --- /dev/null +++ b/src/main/webapp/index.jsp @@ -0,0 +1,5 @@ + + +

Hello World: src/main/webapp/index.jsp

+ +