Tìm hiểu docker-compose.yml

Cấu trúc cơ bản docker-compose.yml

Docker Compose là công cụ quản lý ứng dụng đa container thông qua file cấu hình YAML. Phiên bản phổ biến hiện nay sử dụng định dạng:

version: '3.8'

Định nghĩa dịch vụ

Các thành phần chính trong phần services:

  • image: Chỉ định image sử dụng
  • ports: Cấu hình ánh xạ cổng
  • build: Tùy chọn xây dựng image

Ví dụ dịch vụ từ image có sẵn

services:
  myapp:
    image: httpd:latest
    ports:
      - "8080:80"

Dịch vụ xây dựng từ Dockerfile

services:
  backend:
    build:
      context: ./src
      dockerfile: Dev.Dockerfile
      args:
        VERSION: "v2"
        MODE: debug
      target: development
      cache_from:
        - backend-cache:latest
      labels:
        maintainer: dev-team
      network: host
      image: custom-backend:2.0
    ports:
      - "3000:3000"

Cấu hình mạng lưới

networks:
  internal_net:
    driver: bridge
    ipam:
      config:
        - subnet: 192.168.0.0/24

Quản lý volume

volumes:
  data_db:
    driver: local
  shared_storage:
    external: true

Ví dụ ứng dụng hoàn chỉnh

Ứng dụng Python kết nối Redis:

version: '3.8'

services:
  flask_app:
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - "5000:5000"
    environment:
      REDIS_HOST: cache
      REDIS_PORT: 6379
    env_file:
      - .env
    depends_on:
      cache:
        condition: service_healthy
    restart: unless-stopped
    networks:
      - backend
    deploy:
      resources:
        limits:
          cpus: '0.5'
          memory: 512M

  cache:
    image: redis:7.0-alpine
    env_file:
      - .env
    command: redis-server --requirepass $$REDIS_PASSWORD
    healthcheck:
      test: ["CMD", "redis-cli", "-a", "$$REDIS_PASSWORD", "ping"]
      interval: 10s
      timeout: 5s
      retries: 5
    volumes:
      - redis_data:/data
    restart: unless-stopped
    networks:
      - backend
    deploy:
      resources:
        limits:
          cpus: '0.3'
          memory: 256M

volumes:
  redis_data:

networks:
  backend:
    driver: bridge

Tùy chỉnh nâng cao

  • Kiểm tra trạng thái sức khỏe:
  • healthcheck:
      test: ["CMD", "wget", "--spider", "http://localhost"]
      interval: 30s
  • Giới hạn tài nguyên:
  • deploy:
      resources:
        limits:
          cpus: '0.8'
          memory: 1G
  • Chạy nhiều bản sao:
  • deploy:
      replicas: 5

Lưu ý triển khai

  • Luôn chỉ định phiên bản rõ ràng
  • Thông tin nhạy cảm dùng biến môi trường
  • Mỗi container chỉ chạy một tiến trình chính
  • Phân tách mạng cho các ứng dụng khác nhau
  • Dữ liệu quan trọng dùng volume có tên
  • Cấu hình driver log phù hợp

Lệnh thường dùng

# Khởi động container
docker-compose up -d

# Dừng container
docker-compose down

# Kiểm tra trạng thái
docker-compose ps

# Xem log
docker-compose logs -f

# Build lại
docker-compose build

# Thực thi lệnh
docker-compose exec <tên_dịch_vụ> <lệnh>

Thẻ: docker docker-compose containers yml Microservices

Đăng vào ngày 1 tháng 7 lúc 03:21