A production-style multi-container backend application deployed on AWS EC2 using Docker Compose, with an automated CI/CD pipeline implemented via GitHub Actions.
This project focuses on containerization, cloud deployment, and deployment automation, rather than application complexity.
Table of Contents
Overview
Architecture
Tech Stack
Features
Project Structure
Local Setup
Cloud Deployment
CI/CD Pipeline
Verification
Security Considerations
Future Enhancements
Overview
This project demonstrates how to design, deploy, and automate a multi-container application in a production-like environment.
The application consists of:
A Node.js REST API
A MongoDB database
Docker Compose for orchestration
AWS EC2 for hosting
GitHub Actions for CI/CD automation
The API functionality is intentionally simple to keep the focus on DevOps practices and infrastructure workflows.
Architecture
Internet | | (HTTP :3000) v Node.js API (Docker Container) | v MongoDB (Docker Container)
This project uses GitHub Actions to automate deployment.
Workflow behavior
Triggered on every push to the main branch
Connects to EC2 via SSH
Pulls latest code
Rebuilds and restarts containers using Docker Compose
Outcome
No manual SSH required after setup
Push-to-deploy workflow
Consistent and repeatable deployments
Verification
To verify the deployment:
curl http://<EC2_PUBLIC_IP>:3000/todos
Expected response:
This confirms the API is live and containers are running correctly.
Security Considerations
SSH access restricted using AWS Security Groups
Private SSH keys are never committed to the repository
GitHub Secrets used for sensitive credentials
Database container is not exposed publicly
Future Enhancements
Nginx reverse proxy with domain-based access
HTTPS using Let’s Encrypt
Automated database backups
Centralized logging and monitoring
Health checks and container restart policies
Project Type
Category: DevOps / Cloud / CI/CD
Focus: Deployment automation and infrastructure workflows
Final Note
This project emphasizes real-world DevOps practices such as container orchestration, cloud deployment, and CI/CD automation over application complexity.
This Project follows the requirement defined by roadmap.sh