So, you want to build a Java Spring Boot application and run it inside a Docker container? This article will provide you step by step guide to build MySQL Database & spring boot application images to run it in a container.
I will be using AWS EC2 Linux instance in this article, but all the commands will be similar on other OS except the installation part.
- First step is to have docker installed on the machine that you are using. Follow steps on below link for installation.
https://docs.docker.com/engine/install/ubuntu/
- Once Docker is installation is finished, check if its installed correctly.
I am using MySQL database in this application, so we will have to first create docker network for the MySQL database.
Pull the MySQL image from docker hub and check if its available locally.
- Create docker network for Spring boot application to communicate with MySQL database.
docker network create springboot-mysql-net
- Run the MySQL container in the network and wait for few minutes.
docker run -it --name mysqldb --network=springboot-mysql-net -e MYSQL_ROOT_PASSWORD=1234 -e MYSQL_DATABASE=expensetracker -e MYSQL_USER=sys -e MYSQL_PASSWORD=1234 -d mysql:5.7
- Now that MySQL container is running, Lets check if the database is created using interactive mode. To connect to mysqldb container in interactive mode, you can use below command with few initial characters from the container id.
Syntax: docker exec -it <container-id> bash
docker exec -it 81e7 bash
mysql -u sys -p 1234
show databases;
- With MySql database running in container now, lets move on to update the application properties to connect to this database.
# MySQL properties
spring.datasource.url=jdbc:mysql://mysqldb:3306/expensetracker
spring.datasource.username=sys
spring.datasource.password=1234
- Now we need to build docker image from the spring boot application jar using Dockerfile.
- Run below command to build the docker image.
docker build -t springbootmysql .
- So, We have our mysql database container running and we have built docker image for the application, lets start the spring boot container on the same network as that of the database one.
docker run --network=springboot-mysql-net --name springboot-container -p 8080:8080 -d springbootmysql
As you can see, our spring boot application is now running in a container.
Lets see how we can push this image to docker hub. You will first need to create your account https://hub.docker.com/
Once account is created, login to docker hub usingdocker login
command.
Once login is successful, you can use below command(change name as per your login & image) to push the image to docker hub.
docker push devanandukalkar/springbootmysql
Hopefully, you find this article useful. Let me know your feedback in comments section.
Top comments (1)
What a coincidence, right now I'm doing several exercises with spring + mysql and I wanted to try it with docker and this article just popped up on Twitter 👍
Really well explained, now I'll try it. Thx