Tài Liệu Xây Dựng & Triển Khai Social API — Docker#
Triển Khai Social API ở môi trường staging với Docker
🔥 Tổng Quan#
Tài liệu này mô tả quy trình xây dựng và triển khai dịch vụ Social API chạy trên Docker trong môi trường staging.Tech Stack#
Framework: Bun (TypeScript) với Drizzle ORM
Xây dựng: bun install → bun run build → bun run compile
Runtime: Bun + Supervisor + Nginx
Cơ sở dữ liệu: MongoDB (qua Drizzle ORM, migrations tại drizzle/)
Hàng đợi tin nhắn: NATS (Alpine)
Source: Git submodule tại build/api/
📖 Tài Liệu Tham Khảo#
🚧 Cấu Trúc Dự Án#
Social/api/
│ ├─ Dockerfile.staging # Staging build
│ ├─ api/ # ⚡ Git submodule — Bun source
│ │ ├─ .env
│ │ ├─ package.json
│ │ ├─ bun.lock
│ │ ├─ drizzle/ # Drizzle ORM migrations
│ │ └─ src/
│ └─ conf/
│ ├─ nginx/
│ │ ├─ common/nginx.conf # Cấu hình Nginx chung
│ │ └─ template/default.conf.template # Template server block
│ └─ supervisor/
│ ├─ common/supervisord.conf # Cấu hình Supervisor chung
│ ├─ common/entry_point.sh # Script khởi chạy
│ ├─ nginx.conf # Cấu hình Nginx Supervisor
│ ├─ social-api.conf # Cấu hình API Supervisor
│ └─ *.sh # Các script khởi chạy
├─ .env.staging # Biến môi trường Docker Compose
└─ docker-compose.yml.staging # Compose file
🏗️ Pipeline Xây dựng#
┌──────────────────────────────────────────────────────────────┐
│ BUN BUILD PIPELINE │
│ │
│ ┌─────────────┐ ┌──────────────┐ │
│ │ GIAI ĐOẠN 1 │ │ GIAI ĐOẠN 2 │ │
│ │ build │───────────▶│ staging │ │
│ │ │ │ │ │
│ │ • bun │ │ • Base image │ │
│ │ install │ │ • Supervisor │ │
│ │ • bun run │ │ • Nginx │ │
│ │ build │ │ • Bun binary │ │
│ │ • bun run │ │ • Drizzle │ │
│ │ compile │ │ migrations │ │
│ └─────────────┘ └──────────────┘ │
└──────────────────────────────────────────────────────────────┘
📦 Dịch Vụ Phụ Thuộc#
| Dịch Vụ | Image | Port | Mục Đích |
|---|
| NATS | nats:alpine | 4222 | Hàng đợi tin nhắn cho giao tiếp bất đồng bộ |
Yêu Cầu Công Cụ#
| Công Cụ | Phiên Bản Tối Thiểu | Mục Đích |
|---|
| Docker | ≥ 24.0.0 | Quản lý container |
| MongoDB | ≥ 7 | Máy chủ cơ sở dữ liệu |
| MySQL | ≥ 8 | Máy chủ cơ sở dữ liệu |
❄️ Cấu Hình#
Biến Môi Trường Docker Compose (.env.staging)#
Biến Môi Trường Ứng Dụng (build/api/.env)#
Thiết Lập Cơ Sở Dữ Liệu (MongoDB)#
🚀 Xây dựng & Triển Khai#
Lưu ý: Dịch vụ API triển khai cùng container NATS cho hàng đợi tin nhắn. File .env của ứng dụng Bun được mount read-only tại /app/.env.
🛡️ Các Thực Hành Bảo Mật#
1.
.env không bao giờ nhúng vào image — mount dưới dạng read-only volume khi runtime
2.
Container non-root — chạy dưới user không đặc quyền (UID: 1200)
3.
Supervisor quản lý — auto-restart khi có lỗi
📚 Tài Liệu Liên Quan#
Modified at 2026-03-25 12:01:41