Goal of this project to create Docker Compose Stack to deploy simple Java application running in Containers 3-Tier Architecture.
- Create AWS EC2 Instance in Public Subnet with any desired Instance Type
- Allow Port 80 in Security Group
- Add A Record in Route 53 Hosted Zone pointing to the EC2 Public IP.
- Apache Maven Build Artifact (.war)
- Install docker and run docker service
- Install docker-compose
- Java Source Code
Docker Compose Stack
- Write Dockerfile to create custom MySQL container image by taking docker.io/mysql:8.0 as reference image from Docker Hub registry.
MYSQL_ROOT_PASSWORDENV MYSQL_DATABASEENV MYSQL_USERENV MYSQL_PASSWORD
- Write Dockerfile to create custom Tomcat application container image by taking docker.io/amazonlinux as reference image from Docker Hub registry.
- Install Apache Tomcat 8.5
- Install unzip, vim, telnet, mysql client, JDK 11 packages
- Copy .war artifact to webapps
- Start Tomcat services on container runtime automatically.
- Write Dockerfile to create custom Nginx container image by taking docker.io/amazonlinux as reference image from Docker Hub registry.
- Install Nginx server
- Install telnet
- Copy custom nginx.conf file with proxy_pass rule to forward the traffic to the app container.
- Write Docker Compose Stack to Build and Run the Nginx, MySQL, App containers.
- Deploy the applications into common single Bridge network
- Supply the values to MySQL environment variables
- Specify dependencies of each containers.
- Run “docker-compose build” command to verify if container images are getting created
- Run “docker-compose up -d” command to verify if all containers are running
- Login to Nginx container shell and check App port is reachable
- Login to App container shell and check MySQL port is reachable
- Browse the application from public internet browser to verify the application is accessible
- Once the project setup completed do not forget to clean up resources to avoid the billing for your test environment
- Run “docker-compose down” command to retire all containers
- Terminate EC2 instance from AWS Console.
Still if you are confident to deploy the compose stack, repeat the steps again. Good Luck!!