CHƯƠNG 04 · Volumes & Data Persistence•BÀI 14 / 80

PostgreSQL 18 và volume mount chính xác

Một thay đổi đường dẫn đủ khiến database trông như mất dữ liệu.

Nền tảng◷ 4 phút đọc2/4 trong chương

Nắm bản chất

PostgreSQL Official Image phiên bản 18 thay đổi layout dữ liệu khuyến nghị: mount volume tại /var/lib/postgresql và để image quản lý thư mục version-specific phía dưới. Những ví dụ từ PostgreSQL 17 trở xuống thường mount /var/lib/postgresql/data; không nên sao chép nguyên mà không kiểm tra tài liệu của tag đang dùng.

Database mới có thể được tự khởi tạo khi data directory trống. Nếu mount sai hoặc thay volume/project name, Postgres có thể tạo cluster mới khiến bạn tưởng dữ liệu cũ đã bị xóa. Đừng kết luận mất dữ liệu trước khi kiểm tra volumes và mount paths.

Luồng hoạt động

Compose→PGDATA→named volume

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_DB: appdb
      POSTGRES_USER: app
      POSTGRES_PASSWORD_FILE: /run/secrets/db_password
    volumes:
      - pgdata:/var/lib/postgresql
    secrets: [db_password]
volumes:
  pgdata:
secrets:
  db_password:
    file: ./secrets/db_password.txt

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

✳

Khởi động database lab, tạo bảng và một row. Chạy docker compose down (không -v), khởi động lại rồi xác minh dữ liệu tồn tại.

Lỗi dễ mắc

!

POSTGRES_PASSWORD_FILE thường chỉ được dùng trong initialization khi data dir mới. Đổi secret file sau đó không tự thay mật khẩu user trong database đã tồn tại.

Tự kiểm tra

Với Postgres Official Image 18, mount volume vào path nào trong bài lab?Xem đáp án ↗

/var/lib/postgresql.

TÀI NGUYÊN ĐI KÈM

Học thêm qua lab

Bài học nền tảng có thể thực hiện trực tiếp bằng các lệnh trên; bảng tra cứu nhanh giúp ôn tập.

→ Mở bảng lệnh tra cứu nhanh
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 ↗