DAY 31- Deploy Containerized Applications with ECS – Day Thirty One

Image tweet
Image cover

100 days of Cloud on GitHub – Read On iCTPro.co.nz – Read on Dev.to


Get the app

Here Iam using a website with nginx server to deploy on a container with the help of ECR.
Let’s get the data

git clone https://github.com/anuvindhs/CLOUD-is-AWSome.git

Docker

Building a docker file

  • Lets build our NGINX docker file for our website.
  • once you have created the docker file inside the folder, copy-paste the below commands
FROM nginx:latest
COPY ./ /usr/share/nginx/html/
  • I am using VScode, check below to understand the folder structure
    AWS Permissions
  • Make sure you have programmatic access via AWS CLI
  • Full permissions to ECS & AmazonEC2ContainerRegistryFullAccess

ECR

Create a repository

  • Goto ECR from AWS console and create a repository
  • Create a ECR repo ,i have named mine webapp-ecr-repo

Login to ECR

if you open the repo, on the right-hand side you can see an option for view push commands.

Now using AWS CLI login to ECR

aws ecr get-login-password --region xx-xxxxxx-xx| docker login --username AWS --password-stdin xxxxxxxxxx.dkr.ecr.xx-xxxxxx-xx.amazonaws.com

Build the docker image

docker build -t webapp-ecr-repo .

Lets tag our image with repo name

docker tag webapp-ecr-repo:latest xxxxxxxxx.dkr.ecr.xx-xxxxxx-xx.amazonaws.com/webapp-ecr-repo:latest

Lets push the image to the repository

docker push xxxxxxxxxx.dkr.ecr.xx-xxxxxxx-xx.amazonaws.com/webapp-ecr-repo:latest

if you are using PowerShell on windows please use windows commands to push the image to the repo.

Image options

ECS

Create a cluster

  • Goto ECS dashboard and click Create Cluster.
  • select EC2 Linux + Networking
  • Enter Cluster name & EC2 instance type , am keeping it to t2.micro.
  • Select the default VPC and Subnets available.
  • Also enable Auto assign public IP
Image ip
  • you can use default Security group or create a new one or can attach a Security group which is already created.
  • Now click Create
  • Image create

Creating Task Definition

  • Click on create Task Definition & then select EC2
Image Taskdef
  • I am naming mine as Taskdef-webapp-ecr
  • Update Task memory to 128 and Task CPU to 1 vCPU, then click Add Container
  • Add a name, mine is container-webapp-ecr
  • Copy your ECR repo URI from the repository and update that on the image coloumn
  • Map your ports, here its 80:80 ,
  • Now add, and create the Task definition.

Run the Task

  • goto Clusters, select Task then click Run New task
  • Select EC2
  • Select out Task Definition we created.
  • Select our Cluster
  • leave everything default and click Run Task

Once the Task is created you will be able to see a Running Status
if you navigate to external Link you will be able to see the live website.

Image external link

Congratulations, now you have successfully configured a docker image which you have pushed to ECR and Deployed on a container with ECS.


✅Connect with me on Twitter
🤝🏽Connect with me on Linkedin
🧑🏼‍🤝‍🧑🏻 Read more post on dev.to or iCTPro.co.nz
💻 Connect with me on GitHub