Compose services, dependencies và profiles
Đưa hệ thống nhiều containers vào một cấu hình version-controlled.
Nắm bản chất
Docker Compose mô tả một application stack gồm services, networks, volumes,
secrets và cấu hình runtime. Service name là DNS name trong network Compose.
depends_on hỗ trợ điều phối startup; với
condition: service_healthy, Compose đợi healthcheck trước khi khởi
động dependent service.
Healthcheck không đo đầy đủ SLO.
service_healthy giúp tránh một số lỗi race lúc start, không bảo đảm
dependency luôn healthy về sau. profiles tách thành phần tùy chọn
như Prometheus và Grafana khỏi core stack.
Luồng hoạt động
Hãy tự giải thích mỗi mũi tên: dữ liệu, quyền hoặc tín hiệu nào được truyền qua bước này?
Lệnh & cấu hình mẫu
services:
api:
build: ./app
depends_on:
db:
condition: service_healthy
db:
image: postgres:18
healthcheck:
test: ["CMD-SHELL", "pg_isready -U app"]
interval: 5s
retries: 10
grafana:
image: grafana/grafana
profiles: [monitoring]
Lệnh có placeholder hoặc phụ thuộc môi trường thì cần thay thông tin thực tế, kiểm tra quyền và chỉ thực hiện trên tài nguyên được phép.
Bài tập 10–20 phút
Mở lab Buổi 6, chạy docker compose config --quiet rồi
docker compose up -d --build. Bật monitoring bằng
docker compose --profile monitoring up -d.
Lỗi dễ mắc
Không để password production trong YAML plaintext. Các biến
environment có thể bị hiển thị qua inspect/diagnostics; dùng
secrets mechanism phù hợp.
Tự kiểm tra
`depends_on` có tự restart API nếu DB chết một lúc rồi hồi phục không?Xem đáp án ↗
Không tự bảo đảm recovery kiểu đó. Ứng dụng phải có reconnect/retry và runtime có restart policy phù hợp.
Học thêm qua lab
Có project thực hành đúng với chương này, kèm README và những giới hạn môi trường cần lưu ý.
↓ Tải mã nguồn thực hành chương 06Đối chiếu tài liệu gốc
Cú pháp và khả năng hỗ trợ có thể thay đổi theo phiên bản. Trước khi dùng Production, hãy kiểm tra tài liệu tương ứng.
Mở tài liệu chính thức ↗