How I Automated a 3-Tier Application CI/CD Pipeline with Docker, Azure & GitHub Actions
I recently completed a hands-on DevOps project where I took FocusFlow, a 3-tier application built with React, Node.js/Express, and PostgreSQL, from raw source code to a live deployment on an Azure Linux VM.
I started by understanding and testing the application locally before touching any infrastructure. I tested the database, backend API endpoints, and health checks, then containerised the backend and frontend with Docker. Using Docker Compose, I connected the three tiers and performed a complete end-to-end test: frontend β backend β database. π
Next, I created versioned Docker images using Git commit hashes and pushed them to Docker Hub. I then provisioned an Azure VM, installed Docker, configured the production Compose environment, and deployed the application publicly.
The most important part was automating the deployment with GitHub Actions. Every push to "main" now triggers:
GitHub β Build β Docker Hub β Azure VM β Deploy β Health Check
I also tested a real rollback by deliberately deploying a broken version and then restoring the previous known-good image. π₯²
The process wasn't perfect. I encountered Docker build errors, Azure VM availability issues, SSH/SCP mistakes, missing port mappings, secret-handling problems, and a Docker Hub token permission error. Each issue became part of the learning process. π
The repository contains the Dockerfiles, Compose configurations, Azure provisioning script, GitHub Actions workflow, rollback process, and a structured README explaining everything step by step for beginners.
Project complete and submitted. π
Top comments (1)
Some comments may only be visible to logged-in visitors. Sign in to view all comments.