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
When the application is deployed and running, you can reach the frontend through my domain, all set up with Route53.

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