Docker & CI/CD Pipelines
What is Docker?
Docker vs Virtual Machines
Virtual Machine:
┌─────────────────────────────┐
│ Application │
├─────────────────────────────┤
│ Guest OS (GB) │
├─────────────────────────────┤
│ Hypervisor │
├─────────────────────────────┤
│ Host OS │
└─────────────────────────────┘
Docker Container:
┌─────────────────────────────┐
│ Application │
├─────────────────────────────┤
│ Docker Engine │
├─────────────────────────────┤
│ Host OS │
└─────────────────────────────┘Docker Installation
Windows
Linux
Docker Core Concepts
Images
Containers
Dockerfile for .NET Applications
Basic Dockerfile
Multi-Stage Dockerfile Explained
Dockerfile with Environment Variables
Building and Running Docker Images
Build Image
Run Container
Container Management
Docker Compose
Basic docker-compose.yml
Complete docker-compose.yml with Multiple Services
Docker Compose Commands
.dockerignore File
Docker Best Practices
1. Use Multi-Stage Builds
2. Leverage Build Cache
3. Use Specific Image Tags
4. Run as Non-Root User
5. Minimize Layers
CI/CD Fundamentals
Continuous Integration (CI)
Continuous Deployment (CD)
GitHub Actions
Basic Workflow
Build, Test, and Docker
Deploy to Azure
Matrix Strategy (Multiple Versions)
Azure DevOps Pipelines
Basic Pipeline
Docker Build and Push
Multi-Stage Pipeline (Build, Test, Deploy)
Deployment Strategies
1. Blue-Green Deployment
2. Rolling Deployment
3. Canary Deployment
Health Checks
ASP.NET Core Health Checks
Docker Health Check
Docker Compose with Health Check
Secrets Management
GitHub Secrets
Azure Key Vault
Docker Secrets
Monitoring and Logging
Application Insights in Docker
Logging with Serilog
Docker Volume for Logs
Best Practices Summary
Docker
CI/CD
Quick Reference: Docker Commands
Last updated