Cấu hình Docker Compose cho PostgreSQL và Redis
Nhiều lập trình viên cho rằng chạy cơ sở dữ liệu cục bộ qua container luôn gây ngốn RAM và khiến máy nóng nhanh. Thực tế, khi cô lập dịch vụ bằng docker-compose.yml với các bản phân phối rút gọn, tài nguyên tiêu thụ ở môi trường dev hoàn toàn nằm trong tầm kiểm soát.
version: '3.8'
services:
postgres:
image: postgres:16-alpine
environment:
POSTGRES_DB: dev_db
POSTGRES_USER: dev_user
POSTGRES_PASSWORD: secretpassword
ports:
- "5432:5432"
volumes:
- pgdata:/var/lib/postgresql/data
command: postgres -c shared_buffers=128MB -c max_connections=50
redis:
image: redis:7-alpine
ports:
- "6379:6379"
command: redis-server --maxmemory 128mb --maxmemory-policy allkeys-lru
volumes:
- redisdata:/data
volumes:
pgdata:
redisdata:
Cùng chủ đề, ReviewLaptop từng viết một bài kỹ hơn về phần này.
Đánh giá hiệu năng và mức tiêu thụ tài nguyên thực tế
Về mặt kỹ thuật, việc tinh chỉnh trực tiếp cờ lệnh khi khởi chạy giải quyết trực tiếp ba điểm nghẽn phần cứng:
-
Thời gian khởi động và RAM: Dùng image nền
alpinegiúp nạp container chỉ mất vài giây. Ở trạng thái nghỉ, PostgreSQL chiếm khoảng 30–50MB RAM, còn Redis duy trì mức dưới 20MB. Khi phát sinh tải truy vấn thử nghiệm, mức chiếm dụng bộ nhớ không vượt quá ngưỡng trầnshared_buffersvàmaxmemoryđã khai báo. - Hiệu năng truy vấn: Cơ chế lưu dữ liệu trên RAM của Redis giảm tải rõ rệt số lượng query nặng truyền tới PostgreSQL, giữ độ trễ đọc ghi ở mức microsecond.
- Độ bền SSD và điện năng: Bản chất các thao tác ghi log liên tục (WAL của PostgreSQL hoặc snapshot AOF của Redis) tạo ra áp lực I/O đều đặn lên ổ flash. Việc giới hạn tần suất flush đĩa trong môi trường dev giúp kéo giảm đáng kể số chu kỳ ghi không cần thiết.
Đối với những ai làm việc di động trên laptop, việc duy trì mức tải container thấp là cách trực tiếp để kiểm soát nhiệt lượng và chu kỳ sạc xả pin. Những băn khoăn về giới hạn lưu trữ năng lượng trên máy mỏng nhẹ cũng là chủ đề được phân tích sâu tại technologyspot.vn.
Nguyên tắc vận hành cục bộ hiệu quả
- Dùng named volume thay vì bind mount trực tiếp thư mục host để giữ tốc độ truy xuất I/O ở mức cao nhất.
- Khống chế kết nối
max_connectionsở mức vừa phải để tránh phân mảnh bộ nhớ khi mở cùng lúc nhiều IDE nặng. - Dừng hoàn toàn stack bằng lệnh
docker compose downkhi kết thúc phiên làm việc nhằm giải phóng CPU và RAM cho hệ thống.
Top comments (0)