DEV Community

Rajesh Kumar
Rajesh Kumar

Posted on

2 2

Deploy dockerized app in aws ecs with fresh new vpc.

After struggling for few days to deploy a dockerrized applicatin in ECS, found the solution & simplified into script, so that anyone can deploy easily simply replacing app folder.

This example is for deployment of App with fresh new VPC. Vpc will be created during ecs/fargate deployment.

git location

https://github.com/rajeshkumarbehura/vpc_ecs_app_deploy

Requirement an application to deploy in Aws ECS

  1. Project must dockerized. In my repo, its demo-app folder which is nestjs based simple application.You can have java/nodejs/python any kind of project as long as it is dockerized.
  2. aws cli & terraform cli must be installed in your command line.

    aws --version
    terraform --version

  3. aws details must be avaialble
    export AWS_ACCESS_KEY_ID=XXXXXXXXXXXXXXXX
    export AWS_SECRET_ACCESS_KEY=XXXXXXXXXXXXXXXXXXXXX
    export AWS_REGION=ap-southeast-1
    export AWS_PROFILE=dev // dev profile must match in terraform/providers.ts file

  4. It will create fresh new VPC for ecs/fargate deployment.

  5. After successfully deployment, terraform will print the alb path as

demoapp_alb_hostname = dev-demoapp-XXXXXXX.ap-southeast-1.elb.amazonaws.com

Steps to deploy

Clone the project into your local.

a. Validate aws profile

export AWS_PROFILE=dev

this dev profile name must match with deploy/terraform/provider.tf

# Specify the provider and access details
provider "aws" {
  shared_credentials_file = "$HOME/.aws/credentials"
  profile                 = "dev"
  region                  = var.aws_region
}
Enter fullscreen mode Exit fullscreen mode
b. Update shell script file

Two shell script files exist inside deploy folder.

  1. create_repo_in_ecr.sh : Update aws profile details in this file. This file will create aws ecr repository for project. And print a link after successulry created. Eg - XXXXXX.dkr.ecr.ap-southeast-1.amazonaws.com/demo_app_repo

This is ECR_REPO_PATH for your project.

  1. push_image_to_ecr_&_deploy_ecs.sh : Update aws profile details & ECR_REPO_PATH. This file will follows below step.
    • create docker container,
    • container will tagged for ecr repo,
    • push into ecr repository
    • application deploy into aws ecs from ecr.
c. Execution

Now in final steps, after updating above details, go to deploy folder in command line.

  1. Run create_repo_in_ecr.sh file for creating repo.
  2. Run push_image_to_ecr_&_deploy_ecs.sh to deploy application
d. Destroy in Aws

Cleaning or deleteing all resources from aws, use below steps-

  1. Go to deploy/terraform folder location in command line & run below command
terraform destroy 
Enter fullscreen mode Exit fullscreen mode

How to deploy your own application

  1. Replace your application inside demo-app content & make sure your application working dockerized. Please do not change demo-app
  2. Create health check api - api/index. This is configured inside terraform/variable.tf file in terraform folder

variable "demoapp_health_check_path" {
default = "/api/index"
}

  1. Optional step- to create your all configuration with a new name, do a find all for "demoapp" text inside terraform folder and replace with ur own text. For example- replace "demoapp" text with "customerapp". Then do terraform plan, and check all things are working or not. if any place, please rename according to your text.

Play with terraform, ecr & ecs to explore more.

Sentry image

Hands-on debugging session: instrument, monitor, and fix

Join Lazar for a hands-on session where you’ll build it, break it, debug it, and fix it. You’ll set up Sentry, track errors, use Session Replay and Tracing, and leverage some good ol’ AI to find and fix issues fast.

RSVP here →

Top comments (0)

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay