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.
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
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.
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 ↗