토. 8월 16th, 2025

D: 🚀 Introduction to Docker Compose
Docker Compose is a powerful tool for defining and running multi-container Docker applications. With a simple YAML file, you can configure all your application’s services, networks, and volumes, then spin them up with a single command.

🔹 Why Use Docker Compose?

  • Simplified Workflow 🛠️: No need to manually run multiple docker run commands.
  • Reproducibility 🔄: Ensures consistent environments across development, testing, and production.
  • Scalability 📈: Easily scale services up or down.

🧩 Core Features of Docker Compose

1️⃣ Service Definition with docker-compose.yml

The heart of Docker Compose is the docker-compose.yml file, where you define:

  • Services (containers)
  • Networks (communication between containers)
  • Volumes (persistent data storage)

Example:

version: "3.8"
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
  db:
    image: postgres:13
    environment:
      POSTGRES_PASSWORD: example

2️⃣ Easy Service Management

  • Start All Services 🚀:
    docker-compose up
  • Stop All Services ⏹️:
    docker-compose down
  • View Running Services 👀:
    docker-compose ps

3️⃣ Environment Variables & Configuration

Use .env files or direct YAML definitions for dynamic configurations.

Example:

services:
  app:
    image: myapp:latest
    environment:
      - DB_HOST=db
      - DB_PASSWORD=${DB_PASSWORD}  # From .env file

4️⃣ Networking Made Simple 🌐

  • Containers in the same Compose file automatically join a default network.
  • Services can communicate using their service names as hostnames.

Example:

services:
  backend:
    image: backend:latest
  frontend:
    image: frontend:latest
    depends_on:
      - backend  # Ensures backend starts first

5️⃣ Volume & Data Persistence 💾

Define volumes to persist data even after containers are removed.

Example:

services:
  db:
    image: mysql:8.0
    volumes:
      - db_data:/var/lib/mysql
volumes:
  db_data:  # Named volume

6️⃣ Scaling Services 📊

Scale instances of a service easily:

docker-compose up --scale web=3  # Runs 3 instances of 'web'

Advanced Tips & Best Practices

Use depends_on Wisely: Ensures service order but doesn’t wait for readiness.
Override Configs: Use multiple Compose files for different environments (e.g., docker-compose.prod.yml).
Health Checks: Add health checks to ensure services are fully ready.

Example:

services:
  api:
    image: myapi:latest
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:3000/health"]
      interval: 30s
      timeout: 10s

🎯 Conclusion

Docker Compose streamlines multi-container app management, making development and deployment faster and more reliable. By mastering its YAML syntax and core features, you can efficiently orchestrate complex environments with ease.

💡 Next Steps:

  • Experiment with multi-service apps (e.g., Django + PostgreSQL).
  • Explore Docker Swarm for production orchestration.

🔗 Official Docs: https://docs.docker.com/compose/

Happy containerizing! 🐳💻

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다