There are multiple ways* in which you can containerize monolith application. AWS has also recently launched App2Container - A2C commmand line tool, which automates containerization process by packaging the application artifact and identified dependencies into container images, configures the network ports, and generates the ECS task and Kubernetes pod definitions. A2C provisions, through CloudFormation, the cloud infrastructure and CI/CD pipelines required to deploy the containerized application.
For this workshop, we will take dive deep - step by step approach, which will help you with better understanding of the underlaying infrastructure components and AWS Services.
entrypoint.sh files to working directory. It is required to containerize our Trip Management monolith application.
cd ~/environment/tripmgmt/ wget https://build-first-devops-ecs.workshop.aws/reference-files/Dockerfile.txt -O Dockerfile wget https://build-first-devops-ecs.workshop.aws/reference-files/entrypoint.sh
Review support files.
cat Dockerfile cat entrypoint.sh
Build application with production flag. This command may take around 3 - 5 mins.
./gradlew bootWar -Pprod -Pwar
Create docker image.
docker build -t tripmgmt .
Test production release application locally through docker-compose.
docker-compose -f src/main/docker/app.yml up
To open application for testing, use Preview -> Preview Running Application and then click Pop Out Into New Window from newly opened IDE browser window as shown in below image.
Play with the Application by sign-in.
Once you are done with playing with, open another terminal window and gracefully shutdown Trip Management Monolith Application.
docker-compose -f src/main/docker/app.yml down
Great, Congratulations !!! You have successfully created and conainerized Java and React based Monolith Application. Let’s learn and explore next section for deploying containerized Monolith Application through AWS DevOps services.
* Note: Jhipster provides
jhipster aws and
jhipster aws-containers generator options, which respectively deploys to AWS Elastic Beanstalk and AWS ECS with Fargate launch type with other supported services. However, it has limited support and all setup is done with cloudformation template. So for this workshop, we will learn and explore AWS DevOps Services and Amazon ECS with dive deep approach.