3.5 KiB
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.dbtrong thư mụcteedy-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
- Bổ sung service
teedy-dbsử dụng imagepostgres:13-alpine. - Thêm mạng nội bộ
docker-internalvà mạng kết nối bên ngoàiinternet. - 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
- Á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.