IOD Logo Module 10 Lab Portfolio Docker Logo

Samuel Love

DevOps Engineering: Docker, CI/CD & AWS Cloud Deployment

📚 Module 10 Lab Overview

Complete DevOps Implementation: Five comprehensive exercises covering Docker containerization, CI/CD automation, and AWS cloud deployment strategies.

This portfolio demonstrates comprehensive DevOps engineering skills through the implementation of a Socket.IO chat application with complete containerization and continuous integration/deployment pipeline. The application showcases modern DevOps practices including Docker containerization, GitHub Actions automation, and AWS cloud deployment across multiple platforms.

🌟 Complete Implementation & Documentation

The GitHub repository contains:

  • 5/5 Exercises Completed: All lab requirements fulfilled successfully
  • Public Applications: Multiple deployment strategies demonstrated
  • Best Practices: Security, performance, and scalability implemented
  • Documentation: Comprehensive technical documentation provided

🛠️ Skills Developed & Tools Mastered

🐳 Docker Mastery

  • ✅ Dockerfile creation and optimization
  • ✅ Image management and registry publishing
  • ✅ Container orchestration and networking
  • ✅ Production deployment strategies
  • ✅ Security best practices

⚙️ CI/CD Automation

  • ✅ GitHub Actions workflow development
  • ✅ Automated testing and deployment
  • ✅ Docker Hub integration
  • ✅ Pipeline security and optimization
  • ✅ Multi-platform builds

☁️ AWS Cloud Deployment

  • ✅ EC2 instance configuration
  • ✅ Docker deployment on AWS
  • ✅ Elastic Beanstalk applications
  • ✅ Security groups and networking
  • ✅ Cloud infrastructure management

🐳 Exercise 1: Docker Implementation

Objective: Create a Dockerfile for a Node.js application without database dependencies and publish to Docker Hub for public access.

📋 Requirements:

  • Create optimized Dockerfile for Node.js application
  • Build and test Docker image locally
  • Publish image to Docker Hub public registry
  • Provide public Docker Hub link for trainer access
  • Ensure application runs without database dependencies

🐳 Public Docker Hub Access

The Docker image has been published to Docker Hub for easy access. Use the links below to pull and run the application:

  • Pull Command: Downloads the image to your local machine (docker pull tatoslover/module10lab)
  • Run Command: Starts the container on port 3000 (docker run -p 3000:3000 tatoslover/module10lab)
  • Access: Visit http://localhost:3000 to use the application

⚙️ Exercise 2: GitHub Actions CI/CD Pipeline

Objective: Create GitHub Actions workflow that automatically builds and pushes Docker images to Docker Hub when commits are made.

📋 Requirements:

  • Create GitHub Actions workflow file
  • Automate Docker image building on push
  • Integrate with Docker Hub for automatic publishing
  • Include testing and validation steps
  • Secure credential management with GitHub Secrets
🔄 GitHub Actions Workflow (.github/workflows/ci-cd.yml)
name: CI/CD Pipeline on: push: branches: [ main, develop ] pull_request: branches: [ main ] jobs: test: runs-on: ubuntu-latest strategy: matrix: node-version: [18.x, 19.x] steps: - name: Checkout repository uses: actions/checkout@v3 - name: Setup Node.js ${{ matrix.node-version }} uses: actions/setup-node@v3 with: node-version: ${{ matrix.node-version }} cache: 'npm' - name: Install dependencies run: npm ci - name: Run tests run: npm test - name: Run linting run: npm run lint build-and-deploy: needs: test runs-on: ubuntu-latest if: github.ref == 'refs/heads/main' steps: - name: Checkout repository uses: actions/checkout@v3 - name: Setup Docker Buildx uses: docker/setup-buildx-action@v2 - name: Login to Docker Hub uses: docker/login-action@v2 with: username: ${{ secrets.DOCKER_HUB_USERNAME }} password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }} - name: Build and push Docker image uses: docker/build-push-action@v4 with: context: . push: true tags: | tatoslover/socketio-chat:latest tatoslover/socketio-chat:${{ github.sha }} cache-from: type=gha cache-to: type=gha,mode=max

🎯 CI/CD Pipeline Features

  • Automated Testing: Multi-version Node.js testing
  • Code Quality: ESLint integration
  • Docker Integration: Automated image building
  • Security: GitHub Secrets for credentials
  • Optimization: Build caching for faster deployments
  • Versioning: Git SHA tagging for traceability

☁️ Exercise 3: AWS EC2 Setup & Docker Deployment

Objective: Create and configure an AWS EC2 Ubuntu instance using free tier resources and deploy the Docker application to make it publicly accessible.

📋 Requirements:

  • Create EC2 instance using free tier (t2.micro)
  • Configure Ubuntu 22.04 LTS operating system
  • Set up security groups and access controls
  • Configure SSH access and key management
  • Install Docker and necessary dependencies
  • Pull Docker image from Docker Hub to EC2 instance
  • Configure Docker container to run on EC2
  • Set up port forwarding and security group rules
  • Test application accessibility from public internet
  • Share public URL with trainer for verification

🎯 EC2 & Docker Deployment Achievements

  • Free Tier: Cost-effective t2.micro instance
  • Security: Properly configured security groups
  • Docker Ready: Container runtime installed
  • SSH Access: Secure key-based authentication
  • Network: Public IP with proper port access
  • Public Access: Application accessible via public IP
  • Container Management: Docker container running as daemon
  • Auto-Restart: Container resilience configuration
  • Monitoring: Container logs and health checks

🌱 Exercise 4: AWS Elastic Beanstalk Deployment

Objective: Deploy a Node.js application using AWS Elastic Beanstalk for managed cloud hosting with automatic scaling and load balancing.

📋 Requirements:

  • Deploy GitHub repository to Elastic Beanstalk
  • Use standalone Node.js application (no database)
  • Configure environment settings and health checks
  • Set up domain access and SSL (optional)
  • Share live application URL with trainer

🎯 Beanstalk Deployment Features

  • Managed Platform: Automatic server management
  • Auto Scaling: Traffic-based scaling capabilities
  • Load Balancing: Built-in application load balancer
  • Health Monitoring: Comprehensive health checks
  • Zero Downtime: Rolling deployments
  • SSL/HTTPS: Easy SSL certificate integration