Simplify a cloud-native, Spring Boot Docker deployment

Do you want to move your cloud-native Spring Boot application into a Docker image and test its functionality as it runs within a container? If you have limited exposure with the development and deployment of 12-factor apps, this sounds like an intimidating prospect. But, don't fret.

TheServerSide has published several articles on how to create Spring Boot applications, be it mobile, MVC-based applications or simply RESTful web services. There is a complete, cloud-native application developed with Spring Boot that combines these Spring APIs into a single and fun rock-paper-scissors application. We will use this to demonstrate the deployment of an example Spring Boot application to Docker.

Spring Boot Docker example prerequisites

For this tutorial, you will need to have a Linux distribution -- such as Ubuntu -- with the following parameters:

  • A JDK installation
  • A Git installation
  • A Maven installation
  • A Docker installation

Git pull and Maven build

You can obtain the application with the following pull request on the GitHub repository:

spring@boot:~example/$ git clone

This code will place the source code on your local machine. You will require a Maven build command to generate the executable JAR file which contains the Spring Boot application packaged within an embedded Tomcat container.

spring@boot:~example/$ cd spock*
spring@boot:~example/spock-lizard-docker/$ mvn clean install

Next, move into the target folder of the application and issue the java -jar command to run the application:

spring@boot:~example/spock-lizard-docker/target$ java -jar spock-lizard-1.0.jar

After this command completes, you can play the game by pointing your browser at http://localhost:8080.

embedded Spring Boot
Run a Spring Boot app locally in the browser.

Spring Boot and Docker packages

When you're finished with the application, close the terminal window which launched the JVM.

Since this application has a file named Dockerfile in the root directory, you can tell Docker to create a container image with the following command. But, remember to include the '.' at the end, because it will fail to run if you forget.

spring@boot:~/spock-lizard-docker/$ sudo docker build -t spock-lizard-cameron .

I intentionally changed the last word of the image from 'docker' to 'cameron' in the above command just to demonstrate that the name of the Docker image isn't tied to the application it contains.

Run the Spring Boot Docker example

The next step is to run the application within the newly created container image by issuing the following command:

spring@boot:~/spock-lizard-docker/$ sudo docker run -p 8099:8080 -t spock-lizard-cameron

The -p 8099:8080 switch is simply a port mapping that allows external requests that come in on port 8066 to be mapped to the internal port 8080, through which the actual application runs. When you run the app through the container, the port 8099 needs to be specified as part of the URL.

Spring Boot Docker deploy
Spring Boot application running on port 8099 with Docker.

That's all there is to perform a deployment with the Spring Boot Docker example application.  

View All Videos
App Architecture
Software Quality
Cloud Computing