Steps to Setup Three-Tier Application with Docker Containers

In today’s world of dynamic web applications, setting up a robust and scalable architecture is a top priority for developers. A three-tier architecture, consisting of presentation, application logic, and data storage layers.

Pairing this architecture with Docker containers offers a flexible, efficient, and reliable solution for deploying web applications.

In this blog, we will walk you through the step-by-step process of setting up a three-tier application using Docker containers.

Let’s dive in!

What is a Three-Tier Application with Docker Containers?

A three-tier application is a commonly employed architectural design for developing and deploying web applications. It organizes the application into three distinct and logical layers: presentation, application logic, and data storage.

Each of these layers has a unique role, and when integrated with Docker containers, it provides a versatile and scalable approach to creating and overseeing web applications.

Here are some aspects of Setting Up a Three-Tier Application with Docker Containers:

Presentation Tier

This tier will be involved in user interface design and interaction was made with the end users. It comprises web servers such as  Nginx or Apache and it includes programming languages such as  HTML, CSS, and client-side scripts.

Dockers in the presentation layer are configured to expose certain ports and routes to manage user requests.

Application Logic Tier

The application logic tier includes web application core functionalities. It takes care of data processing, user request handling, interaction management between the data tiers, and presentation.

In the application logic tier, containers execute the application code, often using web application frameworks like Django, Ruby on Rails, or Spring Boot. These containers need to be set up to establish connections with the presentation tier through clearly defined APIs or endpoints.

Data Storage Tier

As for the data storage tier, its primary role is to handle data management and storage, typically involving databases. Containers in this tier can operate database management systems such as MySQL, PostgreSQL, or NoSQL databases like MongoDB. 

It’s crucial to ensure that the containers in this tier are configured securely to persist data and allow secure access to the application logic tier.

What is Docker Containers?

A container is a standardized unit of software that bundles together not only the application code but also all the essential dependencies. This packaging allows an application to run consistently and reliably across various computing environments.

 A Docker container image, in particular, is a compact, self-sufficient package containing everything necessary to execute an application: the code, runtime, system tools, system libraries, and configurations.

When you run a Docker container image on the Docker Engine, it transforms into a live container. This applies to both Linux and Windows-based applications. Containerized software guarantees consistent behavior, irrespective of the underlying infrastructure. Containers effectively shield software from variations in its environment, ensuring that it performs consistently, whether in a development or staging environment, or any other setting.

Three-tier application benefits with Docker Containers:

docker containers benefits

  • Modularity: Docker containers encapsulate application components and dependencies, making it easy to manage and update each tier independently.
  • Consistency: Docker ensures that your application runs consistently across different environments, reducing compatibility issues and improving reliability.
  • Scalability: Docker containers can be easily scaled up or down, making it simpler to accommodate changes in user demand and traffic.
  • Efficiency: Docker’s lightweight nature and rapid deployment reduce resource wastage, making the most of your infrastructure.
  • Isolation: Containers isolate application components, enhancing security and minimizing interference between tiers.
  • Portability: Docker containers can run on various platforms and cloud providers, offering flexibility and portability.
  • Automation: Docker enables automation of deployment processes, speeding up development and reducing human errors.
  • Testing and Debugging: Containers are ideal for testing and debugging, facilitating quicker development cycles.
  • Maintainability: Containerized applications are easier to maintain, update, and troubleshoot.

Also Read : What is Docker?


Before you begin with this tutorial, make sure you have the following prerequisites in place:

  • An active Internet connection: You’ll need a stable and active Internet connection to access the required resources and documentation during the tutorial.
  • Docker installation: Ensure that you have Docker installed on your computer. Docker is a critical tool for creating and managing containers, which is essential for following this tutorial. You can follow the instructions below to install Docker.

Steps to Setup Three-tier Application with Docker Containers

To set up a Three-tier Application with Docker Containers successfully, follow these steps:

Task 1: Sign in to the AWS Management Console

  • Click the “Open Console” button to access the AWS Management Console.
  • On the AWS sign-in page, leave the Account ID as default. Copy your User Name and Password from the Lab Console to the IAM Username and Password in the AWS Console, then click “Sign in.”
  • Set the default AWS Region to “US East (N. Virginia) us-east-1.”

Task 2: Launch an EC2 Instance with Desired Specifications

  • Ensure you are in the “US East (N. Virginia) us-east-1” Region.
  • Navigate to EC2 by clicking “Services” and selecting “EC2” in the “Compute” section.
  • Click “Instances” on the left panel, then click “Launch Instances.”
  • Name the instance as “MyEC2Server.”


  • Search for the “Amazon Linux 2 AMI” and select it.


  • Choose “t2.micro” as the instance type.


  • Create a new key pair with the name “WhizKey,” type “RSA,” and file format “.pem.”
  • In Network Settings, enable “Auto-assign public IP.”
  • Create a security group named “MyEC2Server_SG” and describe it as a Security Group to allow traffic to the EC2 instance.


  • Add security group rules for SSH and HTTP.
  • Proceed to launch the instance by clicking “Launch Instance.”

inbound security

  • Wait for the instance to become “Running” with a health check status of “2/2 checks passed.”


  • Copy the public IPv4 address for later use.

Task 3: SSH into EC2 Instance Using the Key Pair

  • Select your EC2 instance (“MyEC2Server”) and click “Connect.”


  • Choose “EC2 Instance Connect” and click “Connect.”

Task 4: Install an Apache Server on the Instance

  • Switch to the root user: sudo su
  • Update the system: yum -y update
  • Install the Apache web server: yum install docker -y
  • Start the Docker service: systemctl start docker
  • Enable Docker to start on boot: systemctl enable docker
  • Check the Docker service status: systemctl status docker

Task 5: Create Docker Containers for Each Tier

Presentation Tier

  • Create a Docker container for presentation tier using the Nginx image with the following command:


docker run -d –name presentation-tier -p 80:80 nginx

    • docker run initiates a new container.
    • -d runs the container in detached mode.
    • –name presentation-tier assigns a name to the container.
    • -p 80:80 maps port 80 from the host to port 80 in the container.
    • “nginx” specifies the image to use.

Application Logic Tier

  • You can create Docker containers for the application logic tier using the application image


  • docker run -d –name app-logic-tier-1 <app-image>
  • We can simply use same -d and –name options as we did in presentation tier.
  • Replace <app-image> with the application’s Docker image name. For example, use “httpd.”

Note: You can create multiple instances of your application logic containers as needed.

Data Storage Tier

To create Docker containers for the data storage tier, like using a MySQL image, follow these steps:

Run the container in detached mode with a designated name. For example:

data storage tier

Utilize the -e option to specify environment variables, including important settings like the MySQL root password.

These commands will help you create Docker containers for different tiers of your application, including the presentation tier, application logic tier, and data storage tier. Make sure to replace <app-image> with your actual application image name.

To enhance this setup, you can consider implementing the following improvements using Docker:

Scaling and Load Balancing

To efficiently manage container scaling and load balancing, you can utilize Docker Swarm. Start by initializing Docker Swarm with the command docker swarm init.

Create a service for the application logic tier and specify the desired number of replicas using the command docker service create.

Security and Isolation 

You can ensure that each tier is securely isolated by configuring Docker network settings to restrict container communication and enhance overall security.

Monitoring and Logging

For effective monitoring and logging, you can implement external tools like Prometheus and the ELK Stack. These tools provide detailed insights into your containerized applications, helping you manage and troubleshoot them effectively.

Continuous Integration and Continuous Deployment (CI/CD)

To streamline your development process, establish a CI/CD pipeline. This pipeline automates tasks such as building, testing, and deploying updates to your containerized applications, making your development workflow more efficient and consistent.


Can we run multiple applications in a single container?

Yes, technically, you can run multiple applications within a single Docker container. However, it’s generally not recommended to do so. Docker containers are designed to be lightweight, isolated environments that typically run a single process or application. This follows the best practice of “one process per container,” which helps maintain simplicity, manageability, and scalability in containerized applications.

What are the benefits of Docker containers?

The core benefits of Docker such as speed, consistency, density, and portability.

What is Docker?

Docker is an open platform designed for developing, shipping, and running applications. It provides a way to separate your applications from the underlying infrastructure, allowing you to deliver software rapidly and efficiently.

What is the docker containers list?

To list the Docker containers, the commands such as “docker ps” or “docker container ls” can be used. It provides a variety of ways to list and filter containers on the Docker engine. 


Hope you have understood how to set up a three-tier application with the docker container tutorial. By leveraging the power of Docker containers, we can easily build and manage the deployment of this architecture.

We also explored the docker containers meaning, concepts, and detailed information about the three-tier application. 

To further experience docker in real-time settings, explore our hands-on labs and sandboxes.

About Basant Singh

Basant Singh is a Cloud Product Manager with over 18+ years of experience in the field. He holds a Bachelor's degree in Instrumentation Engineering, and has dedicated his career to mastering the intricacies of cloud computing technologies. With expertise in Amazon Web Services (AWS), Microsoft Azure, and Google Cloud Platform (GCP), he stays current with the latest developments in the industry. In addition, he has developed a strong interest and proficiency in Google Go Programming (Golang), Docker, and NoSQL databases. With a history of successfully leading teams and building efficient operations and infrastructure, he is well-equipped to help organizations scale and thrive in the ever-evolving world of cloud technology.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top