Pre-requisite: Docker Desktop for Windows to be installed & started
Steps:
Create a WAR file [e.g. TestApp.war]
Create a Dockerfile
Place both of them (WAR & Dockerfile) in same folder (e.g. D:\DevOps)
Navigate to that folder (D:\DevOps) & open command prompt
Run below command to create a image name. Here tomcat-test-webapp is the name of image
docker build -t tomcat-test-webapp .
To run the image use below command
docker run -d -p 8080:8080 tomcat-test-webapp
In case the port to be different use the below structure
docker run -d -p <custom port>:8080 tomcat-test-webapp
Content of Dockerfile
FROM tomcat:9.0.52-jdk8-corretto
COPY ./TestWebApp.war /usr/local/tomcat/webapps
EXPOSE 8080
CMD ["/usr/local/tomcat/bin/catalina.sh","run"]
https://www.youtube.com/watch?v=B9vy3DMHo2I
Pushing Image to Docker Hub
https://www.cloudbees.com/blog/using-docker-push-to-publish-images-to-dockerhub
Pulling Images from Docker Hub & Run
docker login
docker pull <docker_user_name>/tomcat-test-webapp:latest
docker run -d -p 9080:8080 <docker_user_name>/tomcat-test-webapp
In case to run image with memory settings or other Catalin options ; use below command:
docker run -d -p 9080:8080 -e CATALINA_OPTS="-Xms512M -Xmx512M" <docker_user_name>/tomcat-test-webapp
Auto Deploy the changes from Docker Hub:
WATCHTOWER_POLL_INTERVAL is set in sec.
docker run -d --name watchtower -e REPO_USER=<> -e REPO_PASS=<> -e WATCHTOWER_POLL_INTERVAL=30 -e WATCHTOWER_CLEANUP=true -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower <container_name>
https://alexgallacher.com/auto-update-docker-containers-by-setting-up-watchtower/
https://containrrr.dev/watchtower/
https://www.geekyhacker.com/how-to-use-spotify-docker-maven-plugin/