End to End Dockerization
Consider we have a Simple Spring Boot application which exposes REST endpoints to fetch Employee records from MySQL Database
In Below, we explained step by step on how we can Dockerize the entire application
Stage 1 : Both SpringBoot App & DB Running in local (host system)
DB Connection String
jdbc:mysql://localhost:3306/MY_DB
Dockerfile
Not applicable (N/A)
Docker-compose.yaml
N/A
Stage 2 : SpringBoot App containerized using Dockerfile & DB Running in local (host system)
DB Connection String
jdbc:mysql://host.docker.internal:3306/MY_DB
Dockerfile
FROM openjdk:8-jdk-alpine
COPY EmpApp.jar EmpApp.jar
CMD ["java", "-jar", "EmpApp.jar"]
Docker-compose.yaml
N/A
Stage 3 : SpringBoot App containerized using docker-compose.yaml & DB Running in local (host system)
DB Connection String
jdbc:mysql://host.docker.internal:3306/MY_DB
Dockerfile
FROM openjdk:8-jdk-alpine
COPY EmpApp.jar EmpApp.jar
CMD ["java", "-jar", "EmpApp.jar"]
Docker-compose.yaml
version : '3'
services:
web:
image : emp-compose-img
build : .
ports :
- "8080:8080"
Stage 4 : Both SpringBoot App & MySQL DB containerized using docker-compose.yaml
DB Connection String
jdbc:mysql://db:3306/MY_DB
Dockerfile
FROM openjdk:8-jdk-alpine
COPY EmpApp.jar EmpApp.jar
CMD ["java", "-jar", "EmpApp.jar"]
Docker-compose.yaml
version : '3'
services:
web:
image : emp-compose-img
build : .
ports :
- "8080:8080"
db:
image : mysql:5.7
restart : always
environment:
MYSQL_DATABASE: 'MY_DB'
MYSQL_ROOT_PASSWORD: 'rootroot'
expose :
- "3306"
volumes:
- ./scripts:/docker-entrypoint-initdb.d
- ./data:/var/lib/mysql