This page details a migration of an AWS elasticbeanstalk deployment of a Java microservice with an RDS backend database to docker, kubernetes and helm.
Spring boot based reference architecture - Reference Architecture
Spring boot war deployed to tomcat - Java Spring JPA Microservice on Kubernetes or EKS or ECS or Docker or Beanstalk or EC2 Tomcat Spring Boot
Spring boot jar running the spring embedded tomcat container - Spring Boot Microservice
Infrastructure
Docker
Containerization of Maven Built Artifacts
https://blogs.oracle.com/javamagazine/containerizing-apps-with-jlink
DockerFile using tomcat image
Code Block |
---|
|
FROM tomcat:8.0.48-jre8
COPY target/biometric.web-*-SNAPSHOT.war /usr/local/tomcat/webapps/biometric.web.war |
DockerFile using alpine image
Build/Tag/Deploy Docker Image
see https://hub.docker.com/r/obrienlabs/biometric-web and https://github.com/obrienlabs/biometric under
Jira |
---|
server | Jira |
---|
serverId | 3e4bde5c-4280-3ade-b3c6-b78ac56eb6c4 |
---|
key | BIOMETRIC-10 |
---|
|
Code Block |
---|
|
obrienlabs:biometric.web.docker michaelobrien$ ./build.sh
Sending build context to Docker daemon 50.96MB
Step 1/2 : FROM tomcat:8.0.48-jre8
8.0.48-jre8: Pulling from library/tomcat
723254a2c089: Pull complete
a23d5c1d9825: Pull complete
Digest: sha256:b2cd0873b73036b3442c5794a6f79d554a4df26d95a40f5683383673a98f3330
Status: Downloaded newer image for tomcat:8.0.48-jre8
---> e072422ca96f
Step 2/2 : COPY target/biometric.web-*-SNAPSHOT.war /usr/local/tomcat/webapps/biometric.web.war
---> 5cd1152a967b
Successfully built 5cd1152a967b
Successfully tagged obrienlabs/biometric-web:latest
obrienlabs/biometric-web latest 5cd1152a967b 1 second ago 608MB
Authenticating with existing credentials...
Login Succeeded
The push refers to repository [docker.io/obrienlabs/biometric-web]
2d64f287a896: Pushed
7a5faefa0b46: Layer already exists
d1a0f91a1ad8: Layer already exists
c4d99fd86e94: Layer already exists
04178c827c65: Layer already exists
c571db474d75: Layer already exists
93742a1ae069: Layer already exists
7ffe9646653b: Layer already exists
6ef532e39c1e: Layer already exists
a4d7b0ac0438: Layer already exists
06f4de5fefea: Layer already exists
851f3e348c69: Layer already exists
e27a10675c56: Layer already exists
0.0.1: digest: sha256:dac09eb8c16fe9d5fb0080479e183acddbd178f77ab60d24fe7072aef0d7d073 size: 3048
|
Run Docker Image locally
Code Block |
---|
|
obrienlabs:biometric.web.docker michaelobrien$ docker run /
--name biometric_web \
-d \
-p 8888:8080 \
-v ~/Dropbox/env/mbp4/biometric/tomcat-users.xml:/usr/local/tomcat/conf/tomcat-users.xml \
obrienlabs/biometric-web
f0f35ace3cacd4dbfd1be709975afc5ff28c22dfe19f014d898db3ce26b35d81
obrienlabs:biometric.web.docker michaelobrien$ docker ps -a | grep biometric
f0f35ace3cac obrienlabs/biometric-web "catalina.sh run" 37 seconds ago Up 36 seconds 0.0.0.0:8888->8080/tcp biometric_web
# check credentials
obrienlabs:biometric.web.docker michaelobrien$ docker exec -it biometric_web /bin/bash
root@f0f35ace3cac:/usr/local/tomcat# cat conf/tomcat-users.xml
<tomcat-users>
<role rolename="admin-gui"/>
<user username="tomcat" password="tomcat" roles="manager-gui"/>
</tomcat-users> |
Login
http://127.0.0.1:8888/manager/html
Check logs
Code Block |
---|
|
obrienlabs:biometric.web.docker michaelobrien$ docker exec -it biometric_web /bin/bash
root@f0f35ace3cac:/usr/local/tomcat/logs# cat localhost.2019-09-04.log
fix
Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'os.environment.configuration.dir' in string value "file://${os.environment.configuration.dir}/${os.environment.ecosystem}"
obrienlabs:biometric.web.docker michaelobrien$ docker stop biometric_web
biometric_web
obrienlabs:biometric.web.docker michaelobrien$ docker rm biometric_web
biometric_web
obrienlabs:biometric.web.docker michaelobrien$ docker run --name biometric_web -d -p 8888:8080 -v ~/Dropbox/env/mbp4/biometric/tomcat-users.xml:/usr/local/tomcat/conf/tomcat-users.xml -v ~/Dropbox/env/mbp4/biometric/setenv.sh:/usr/local/tomcat/bin/setenv.sh -e os.environment.configuration.dir=/ -e os.environment.db.biometric.schema=biometric -e os.environment.db.url=jdbc... -e os.environment.db.username=yyyy -e os.environment.db.password=yyyy -e os.environment.discriminator=biometric -e os.environment.ecosystem=prod obrienlabs/biometric-web
af2c86207d63a02707872b86c6e5d624d7f4cf3a1c05154008986f2aab8a53f2
obrienlabs:biometric.web.docker michaelobrien$ docker exec -it biometric_web /bin/bash
root@af2c86207d63:/usr/local/tomcat# cat logs/localhost.2019-09-04.log
04-Sep-2019 20:46:01.509 INFO [localhost-startStop-1] org.apache.catalina.core.ApplicationContext.log 1 Spring WebApplicationInitializers detected on classpath
04-Sep-2019 20:46:01.664 INFO [localhost-startStop-1] org.apache.catalina.core.ApplicationContext.log Initializing Spring root WebApplicationContext
04-Sep-2019 20:46:09.729 INFO [localhost-startStop-1] org.apache.catalina.core.ApplicationContext.log ContextListener: contextInitialized()
04-Sep-2019 20:46:09.729 INFO [localhost-startStop-1] org.apache.catalina.core.ApplicationContext.log SessionListener: contextInitialized()
|
Check website
http://127.0.0.1:8888/biometric.web/
Code Block |
---|
|
r:5671,s:4271172,hr1:null,hr2:null,45.344003,-75.940494,54 |

Deployment to EC2
Deployment to ECS
Deployment to EKS
Deployment to Kubernetes
Deployment to Kubernetes on Docker Desktop
Deployment to Kubernetes on RKE
RDS for backend MySQL Database