Triển khai trên Docker¶
Dockerfile ở thư mục gốc của kho cùng với docker-compose.yml sẽ build một image chạy với quyền non-root, phục vụ cổng thông tin qua gunicorn trên cổng 8000.
1. Chuẩn bị thư mục dự án¶
Container sẽ bind-mount ./project vào /app/project, vì vậy hãy đặt honor.config.json và thư mục data/ của bạn vào đó:
Bạn có thể tạo các thư mục này ngay trên máy chủ (không cần Python bên trong container):
mkdir -p project/data
# ... sao chép honor.config.json + dữ liệu được gieo data/<slug>.db vào project/ ...
2. Xây dựng + chạy¶
3. Xác minh¶
Mở http://localhost:8000 cho bảng vinh danh, /search và /admin.
Ghi chú¶
- Non-root: container chạy dưới người dùng hệ thống
app:app. - Healthcheck: kiểm tra
/health(không phụ thuộc thành phần nào) sau mỗi 30 giây. - Một worker duy nhất: đặt
WEB_CONCURRENCY=1vì kho SQLite mặc định không an toàn khi chạy đa tiến trình. Để mở rộng theo chiều ngang, hãy chuyển kho dữ liệu sang một máy chủ dùng chung rồi tăngWEB_CONCURRENCY. - Chỉnh sửa cấu hình: sửa
project/honor.config.jsontrên máy chủ rồi chạydocker compose restart, không cần build lại. - Bề mặt quản trị: đặt container sau một reverse proxy (Nginx / Caddy / Traefik) có TLS và xác thực trước khi công khai
/admin.