Loading...
Loading...
2 min read

This project deploys a Dockerised analytics application to AWS ECS Fargate using Terraform and GitHub Actions CI/CD. It includes networking, load balancing, HTTPS, PostgreSQL, observability, and modular infrastructure configuration.
I built this project to showcase my cloud, networking, and infrastructure skills. I chose Umami because I had already used it for hosted frontend projects.
URL: https://analytics.tahmidchoudhury.uk


The infrastructure is designed for high availability, security, and scalability.
Key components:
app
├── docker-compose.yml
├── Dockerfile
└── src
└── app
└── api
└── heartbeat
...
infra
├── bootstrap
│ ├── main.tf
│ ├── modules
│ │ └── ecr
│ │ └── s3
│ ├── provider.tf
│ └── variables.tf
├── envs
├── modules
│ ├── acm
│ ├── alb
│ ├── secrets
│ ├── cloudwatch
│ ├── dns
│ ├── ecs
│ ├── iam
│ ├── networking
│ ├── rds
│ └── security_groups
├── backend.tf
├── main.tf
├── outputs.tf
└── variables.tf
.github
└── workflows
├── docker-build-push.yml
├── terraform-apply.yml
├── terraform-destroy.yml
└── terraform-plan.yml
# By HTTPS
git clone https://github.com/tahmidachoudhury/ecs-umami-analytics.git
# OR by SSH
git clone git@github.com:tahmidachoudhury/ecs-umami-analytics.git
cd ecs-umami-analyticsCreate a .env file in the root of the project:
touch .envAdd the required environment variables:
DATABASE_URL=postgresql://umami:umami@db:5432/umami
APP_SECRET=your-random-secretThe Docker Compose file contains everything needed to run the app locally.
docker compose up --buildOnce the containers are running, visit:
http://localhost:3000docker compose downUse this if you want a clean local reset:
docker compose down -v









Tahmid Choudhury - DevOps Engineer