chuyển qua dùng postgrest

This commit is contained in:
2026-05-20 15:29:44 +07:00
parent 7749e18f4c
commit e023c2bbf2
7 changed files with 210 additions and 2 deletions
+51
View File
@@ -0,0 +1,51 @@
# Chuyển đổi Cơ sở Dữ liệu từ H2 (SQLite-like) sang PostgreSQL
Ứng dụng Teedy DMS hiện tại đang sử dụng cơ sở dữ liệu nhúng H2 theo mặc định (lưu trữ dưới dạng file `./teedy-data/db/docs.mv.db`, có hành vi tương tự SQLite). Để chuyển đổi sang PostgreSQL cho môi trường sản xuất (production) nhằm đảm bảo hiệu năng và độ tin cậy cao, chúng ta cần bổ sung dịch vụ PostgreSQL vào các file cấu hình Docker Compose và cấu hình các biến môi trường kết nối tương ứng cho Teedy.
## User Review Required
> [!IMPORTANT]
> **Lưu ý về H2 và SQLite:**
> Dự án Teedy hiện tại không dùng SQLite mà dùng **H2** làm cơ sở dữ liệu nhúng mặc định (tạo ra file `docs.mv.db` trong thư mục `teedy-data/db`). Việc cấu hình PostgreSQL sẽ thay thế hoàn toàn cơ sở dữ liệu nhúng H2 này.
> [!WARNING]
> **Không thể tự động di chuyển dữ liệu cũ:**
> Khi chuyển đổi từ cơ sở dữ liệu H2 sang PostgreSQL, các tài liệu và tài khoản đã tạo trước đó trong cơ sở dữ liệu nhúng cũ sẽ không tự động đồng bộ sang database PostgreSQL mới. Bạn sẽ cần cấu hình lại tài khoản admin ban đầu.
## Open Questions
> [!IMPORTANT]
> **Xác nhận về PostgREST / PostgreSQL:**
> Bạn đã yêu cầu dùng **"postgrest"**.
> - **PostgREST** là một công cụ tạo REST API tự động từ PostgreSQL database.
> - **PostgreSQL** là hệ quản trị cơ sở dữ liệu quan hệ mà Teedy hỗ trợ chính thức.
>
> Teedy DMS là ứng dụng Java JPA/Hibernate cần kết nối trực tiếp đến một cơ sở dữ liệu SQL qua JDBC (PostgreSQL). Do đó, phương án đề xuất dưới đây là cấu hình **PostgreSQL** làm cơ sở dữ liệu lưu trữ cho Teedy. Xin vui lòng xác nhận xem đây có phải là mong muốn của bạn không?
## Proposed Changes
Chúng ta sẽ sửa đổi 2 file cấu hình Docker Compose chính trong dự án để tích hợp PostgreSQL:
---
### Docker Compose
#### [MODIFY] [docker-compose.yml](file:///wsl.localhost/Ubuntu-22.04/home/x79/TeedyDMS_editpage/docker-compose.yml)
- Bổ sung service `teedy-db` sử dụng image `postgres:13-alpine`.
- Thêm mạng nội bộ `docker-internal` và mạng kết nối bên ngoài `internet`.
- Khai báo các biến môi trường kết nối database cho `teedy-server`:
- `DATABASE_URL: "jdbc:postgresql://teedy-db:5432/teedy"`
- `DATABASE_USER: "teedy_db_user"`
- `DATABASE_PASSWORD: "teedy_db_password"` (hoặc sử dụng mật khẩu bảo mật hơn)
- `DATABASE_POOL_SIZE: "10"`
- Thiết lập dependency `depends_on: - teedy-db`.
#### [MODIFY] [docker-compose-ghcr.yml](file:///wsl.localhost/Ubuntu-22.04/home/x79/TeedyDMS_editpage/docker-compose-ghcr.yml)
- Áp dụng các thay đổi tương tự như trên cho file sử dụng Custom Image chạy trực tiếp trên server sản xuất.
## Verification Plan
### Manual Verification
- Khởi động thử hệ thống bằng lệnh `docker-compose -f docker-compose.yml up -d` (hoặc phiên bản ghcr).
- Kiểm tra logs của container bằng lệnh `docker-compose logs -f` để xác nhận Teedy đã kết nối thành công đến PostgreSQL và thực thi các script khởi tạo bảng.
- Truy cập vào giao diện web Teedy (port `8080`) để kiểm tra tính năng đăng nhập và tạo tài liệu mới.