How to build a Docker container for JAVA web application

I was trying to build a JAVA web application using Docker. I was making a docker container to deploy and run the application. I am beginner. So I started with small POC for java application(jar) which was working fine. I made some changes for JAVA web application(war) and created a Dockerfile for the project which is as follows :

    Dockerfile
    ---------------------------------------------------
    FROM java:8

    RUN apt-get update
    RUN apt-get install -y maven

    WORKDIR /code
    ADD pom.xml /code/pom.xml
    ADD src/main/webapp/WEB-INF/web.xml /codes/rc/main/webapp/WEB-INF/web.xml
    RUN ["mvn", "dependency:resolve"]

    ADD src /code/src
    RUN ["mvn", "package"]
    CMD ["usr/lib/jvm/java-8-openjdk-amd64/bin/java", "-war", "target/techpoint.war"]
    ----------------------------------------------------

Build was successful but when I run the application – It says
“Unrecognized option: -war | Error: Could not create the Java Virtual Machine | Error: A fatal exception has occurred. Program will exit”
And when I replaced “-war” with “-jar” – It says “no main manifest attribute, in target/myapp.war”

  • Is there a clever way to do this with Docker (maybe via save/load/diff)?
  • monax command not found on windows
  • Can't run $(git rev-parse --short HEAD) in package.json on Virtualbox
  • Control a container from another one
  • Clarification on Maven profiles and Phases
  • 'clear' doesn't clean the screen when I run docker on Windows Command Prompt
  • Can somebody tell me how can I make JAVA web application (war) compatible with Docker deployment process. That means what should be the actual Dockerfile (with commands) to make possible to build and run the application?

  • How do I start cron on docker ubuntu base?
  • What are proven options for using ZFS remotely as a volume backend for docker?
  • Docker Error : Cannot use --lxc-conf with execdriver: native-0.2
  • How to make docker volume update automatically?
  • Issue while indexing data in solr in docker cluster setup
  • How can write Dockerfile to start a webserver and curl it for some requirements
  • One Solution collect form web for “How to build a Docker container for JAVA web application”

    You need a web server or an application server container like tomcat or Jboss (and many others) to deploy and run your java based web application. Your “techpoint.war” files need to be copied to the specific folder depends on each web server. For example, if you are using Tomcat then you can copy it to the /webapps folder. Tomcat will extract and deploy the war file.
    You can add the following to your DockerFile.

    FROM tomcat:8.5.11-jre8
    COPY /<war_file_location>/techpoint.war /usr/local/tomcat/webapps/techpoint.war
    

    You can build the image using docker build command and start the container from the created image.

    docker build -t techpoint.
    docker run -it --rm -p 8091:8080 techpoint
    

    Now Tomcat will extract and deploy your war file.How to access the deployed application depends on the webroot of your application. For example,

    http://<ip_address>:8091/techpoint/index.html
    
    Docker will be the best open platform for developers and sysadmins to build, ship, and run distributed applications.