CHƯƠNG 06 · Docker Compose thực chiến•BÀI 23 / 80

Secrets, healthchecks và môi trường

Biết rõ chỗ nào chứa cấu hình nhạy cảm và cách kiểm tra readiness.

Ứng dụng◷ 4 phút đọc3/4 trong chương

Nắm bản chất

Compose có thể mount file-backed secrets vào /run/secrets/NAME. Ứng dụng đọc file qua đường dẫn hoặc biến *_FILE. Không dùng cùng một credentials file cho tất cả services nếu chỉ một số cần quyền đó.

HEALTHCHECK có thể kiểm tra TCP/HTTP/application dependencies. Tránh healthcheck quá đắt hoặc tự tạo trạng thái xấu khi transient dependency timeout. Đặt timeout, retries và start period phù hợp với startup thực tế.

Luồng hoạt động

Secrets→containers→health endpoints

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:
  db:
    image: postgres:18
    environment:
      POSTGRES_PASSWORD_FILE: /run/secrets/db_password
    secrets: [db_password]
secrets:
  db_password:
    file: ./secrets/db_password.txt
docker compose config --quiet
docker inspect DB_CONTAINER --format '{{json .State.Health}}'

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

✳

Kiểm tra trong lab rằng file secret không được commit. Xác minh container UID cần đọc được file mounted secret mà không khiến host directory trở nên public.

Lỗi dễ mắc

!

File-backed Compose secrets không tương đương Vault/Secrets Manager hay cơ chế tự xoay vòng đầy đủ. Mật khẩu đổi trong file không đồng nghĩa ứng dụng/database reload ngay.

Tự kiểm tra

Khác nhau giữa liveness và readiness?Xem đáp án ↗

Liveness trả lời process có nên restart; readiness trả lời nó có sẵn sàng nhận traffic/công việc không.

TÀI NGUYÊN ĐI KÈM

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
NGUỒN CHÍNH THỨC

Đố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 ↗