Docker Desktop:
Docker Desktop is an application that is used for constructing containerized applications and microservices. Docker Desktop can be downloaded on the most common operating systems, which include Windows, MacOS and Linux.
Django developers will use Docker Desktop to help them to build and temporarily store their docker images.
AWS Command Line Interface (CLI):
The AWS CLI is a tool that is used to manage AWS resources programmatically. This tool will for communication between your application and various AWS resources.
Developers need to configure the AWS CLI via the aws --configure command to bridge this form of communication.
Amazon Elastic Container Registry:
Typically referred to as ECR. ECR can be defined as a 'git-hub like' repository for storing docker images in AWS.
Once developers have built their docker images, they can then proceed to push their docker images via the AWS CLI to Amazon Elastic Container Registry.
Amazon Elastic Container Service:
Amazon ECS is a highly scalable performance container management system that was designed to allow you to run your docker containers via server or serverless technology.
Docker containers can be run via the:
ECS - EC2 launch type or the ECS - Fargate launch type.
Users who opt to run their docker containers via the ECS-EC2 launch type will have to be proficient in managing AWS infrastructure, which typically includes EC2 instances, Application Load Balancers and Auto-Scaling Groups, amongst various other archetypes.
However, if a user decides to run their docker containers via the ECS-Fargate launch type then they will have the freedom of not having to stress over managing AWS infrastructure. This is why Fargate is known as a serverless service because you don't need to handle/manage any servers. Servers are still present behind the scenes, although AWS takes care of it and obfuscates it from the developer.
Once developers have pushed their docker image to Amazon Elastic Container Registry, they can then run their docker container in either of the discussed launch types and configure the necessary settings. Such settings include setting up the cluster, task definitions and various other tasks.
Once the application is running on a docker container, users will be able to connect to their app via a standard ip4 address. If however, they require a domain name with a TLS certificate, they will need to make use of additional services:
AWS Route 53
AWS Route 53 is required to register a domain name and to configure the appropriate DNS records. It costs $12 to purchase a domain name and a further $0.50 to keep the domain's hosted zone active each month. Domain names are typically renewed once a year for $12.
Amazon Certificate Manager
Once a user's domain name has been registered, they can provision a TLS certificate via ACM (Amazon Certificate Manager) and bind/attach it to their chosen domain name. The good thing about TLS certificates is that they are FREE of charge.
Amazon Elastic Compute Cloud (Application Load Balancer)
Once a users has setup their domain name along with their TLS certificate they will need to associate their domain name with an Application Load Balancer. The Application Load Balancer can then be configured with a Docker container to forward the traffic appropriately.
However, when Dockerizing a container, it is highly recommended to setup the Application Load Balancer with the domain name before starting the dockerization process.