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ụngports: Cấu hình ánh xạ cổngbuild: 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
deploy:
resources:
limits:
cpus: '0.8'
memory: 1G
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>