If you want to run SpringBoot application as JAR file with Docker, check my other post — Running Spring Boot JAR with Docker
First things First — Lets create a WAR file
As you know, Spring Boot based application by default creates executable JAR. We need to configure a bit to make Spring Boot create a WAR file as output.
- Change packing to war in pom.xml
<packaging>war</packaging>
2. Configure a custom name for your war file by setting finalName property in spring-boot-maven-plugin
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<finalName>sample</finalName>
</configuration>
</plugin>
Remember : In order for your application to run in standalone tomcat, your code needs little tweaks. Please refer it here
https://github.com/iamvickyav/Developer-Tips/blob/master/Deploy-SpringBootApp-In-Tomcat.md
Time to Dockerize our Application
Lets start with creating a Dockerfile
FROM tomcat:latest
ADD target/sample.war /usr/local/tomcat/webapps/
EXPOSE 8080
CMD ["catalina.sh", "run"]
DockerFile demystified
FROM — Base image on top of which our custom image is to be build
ADD — Copy war file into webapps folder inside Docker
EXPOSE — Expose port 8080 outside Docker container
CMD — The command to be executed when the Docker image is run
Here is our docker-compose.yml file
Now lets run the following command
> docker-compose up —-build
Since we specified DOT (.) in build, docker-compose will search for Dockerfile in current directory & will build the image with name specified in image property (in this case its test-img)
Now your application is running in Tomcat inside Docker !!
Source code — https://github.com/iamvickyav/SpringBoot-Docker-Tomcat
Next :
Step by Step instruction on how to build docker image and start the Docker container via Jenkins
https://medium.com/@iamvickyav/build-up-docker-image-via-jenkins-in-local-43b4c5ab4a2b