Showing posts with label Run Spring Boot Docker Container. Show all posts
Showing posts with label Run Spring Boot Docker Container. Show all posts

Sunday, February 4, 2018

Creating Docker image of Spring Boot Application and running on Container

In this post let's see how to create a Docker Image of the Spring Boot Application and running it on Docker Container

Tools:

1. STS - Spring Tool Suite (Version 3.9.2)
2. Docker (Version 17.12.0-ce Installed on Fedora 26)
3. Spring Boot (1.5.2.RELEASE)
4. Java 8
5. Maven (Version 3.3.9)

Prerequisite:

Docker installation is prerequisite, if you have not installed Docker, get it installed. Also I assume you have setup all the above Tools mentioned.

Steps:

Creating Spring Boot jar:

1. Create a Spring Boot Application. You can do this from https://start.spring.io
Or you can check out the sample application I have checked into https://github.com/balatamilmani/docker-demo.git (Name: docker-spring-boot)

2. In a Command prompt go to the directory docker-spring-boot and issue the command
$ mvn clean package
You can see a jar file named docker-spring-boot.jar is created under the docker-spring-boot/target directory.

Creating Docker Image:

3. Make sure the Docker is running in your local, if not start the Docker by issuing the following command
$ sudo systemctl start docker

You can verify if Docker is running by issuing the command
$ sudo systemctl status docker

4. Create a temp Directory in a location of your choice and copy the jar docker-spring-boot.jar (created in Step 2) to that directory

5. Create a file called Dockerfile (with no extension) in the same directory and copy the following content to it

FROM openjdk:8-jre
MAINTAINER Balamurugan Tamilmani
VOLUME /tmp
ADD docker-spring-boot.jar app.jar
RUN sh -c 'touch /app.jar'
ENV JAVA_OPTS=""
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]

You can replace your name as MAINTAINER

6. Issue the following command from the same directory to create the Container Image
$ docker build -t balatamilmani/docker-spring-boot -f Dockerfile .
In the place of balatamilmani substitute your name. This will produce the following output


7. Issue the Docker image list command to see the image is created and stored

$ docker images



Running the Image in Docker Container:

9. Issue the following command to run the Image in the Docker Container
$ docker run -it --rm -p 8181:8080 balatamilmani/docker-spring-boot
Options:
it - Interactive
rm - Remove the Container on exit
p - Bind the container port 8080 to host port 8181

On issuing this command you can see the Spring Boot application startup logs

10. Open a browser window and go to the URL http://localhost:8181
You should be able to see the response from the application as given in the image


11. To start a new Container with the same image issue the same command binding different Host port (e.g. 8282) to the Container port 8080
$ docker run -it --rm -p 8282:8080 balatamilmani/docker-spring-boot
12. Now you can verify the application is running in the URL http://localhost:8282


13. The following command will list the list of running Docker Containers
$ docker ps


14. To stop a Container issue
$ docker stop <CONTAINER ID>

15. To remove the Docker Image from local repository
$ docker image rm b6d205c10e4e
Where <b6d205c10e4e> is IMAGE ID of the Image