🚀 From Source Code to Production: My First Real Docker Deployment This week I completed the EpicBook Docker Capstone as part of the DevOps Micro-Internship, and it completely changed how I think about deploying applications. Taking a Node.js project from raw code to a production-ready deployment taught me something important: systems rarely fail when everything is perfect, they fail when dependencies, timing, or infrastructure behave unpredictably. 🏗️ What I Built A containerized 3-tier architecture using Docker Compose: • Nginx Reverse Proxy • Node.js Backend API • MySQL Database Flow: User → Nginx → Backend → Database ⚙️ Production-Focused Improvements To make the system more realistic and stable, I implemented: • Multi-stage Docker builds for smaller images • Network isolation so the database isn’t publicly exposed • Named volumes for persistent MySQL storage • Structured JSON logging for observability • CORS configuration for controlled API access 🧠 Reliability Insight One configuration made a huge difference: depends_on with service health checks. This ensured: • Backend starts only after MySQL is healthy • Nginx waits until the backend is ready Result: predictable startup with no race conditions. 📉 Optimization Win Multi-stage builds reduced the image size from ~700MB to ~113MB (≈84% smaller). Benefits included faster deployments, improved CI/CD efficiency, and a smaller attack surface. ⚠️ Real Issues I Solved During deployment I encountered several real-world problems: • Azure DevOps pipeline queue delays → solved using a WSL self-hosted agent • Docker Compose container errors during redeploy → resolved with clean container removal • Azure misinterpreting Docker logs as failures → fixed by redirecting stderr These challenges turned out to be the most valuable learning moments. 💡 Key Takeaway Reliable systems aren’t defined by when everything works they’re defined by how they behave when something goes wrong. Grateful to Pravin Mishra for shaping me and introducing me to the modern tech world, and to Praveen Pandey for following our progress and continuously pushing us toward our goals. A heartfelt thanks also to our co-mentors Ranbir Kaur, Tanisha Borana, and Egwu Oko for their constant support and follow-ups. Last but not least, a big thank you to Team Lead Pratyush Pahari, Goodness Ojonuba, Swaroopa Gajali, Ogbonna Nwanneka Mary for their effort and commitment, for the amazing demo on this module. #Docker #DevOps #CloudComputing #Containerization #LearningInPublic
Great job Engr❤️👏
Well done Ashu 👏
Well done Ashu Soni 👏🏽👏🏽👏🏽