| Dịch Vụ | Công Nghệ | Runtime | Mục Đích |
|---|---|---|---|
| Admin | Laravel (PHP) | PHP-FPM + Nginx | Dashboard quản trị push notification |
| Stack Novu | Node.js (pnpm + nx monorepo) | Node.js | Hạ tầng notification mã nguồn mở |
| Thành Phần | Dịch Vụ AWS | Mục Đích |
|---|---|---|
| Container Images | AWS ECR | Registry Docker image riêng tư |
| Cơ sở dữ liệu (Admin) | AWS RDS | MySQL cho Laravel |
| Cache | ElastiCache | Redis cho session, queue, cache driver |
tools/onepush-admin-prodadmin/build/source/OnePush/admin/
├─ build/
│ ├─ Dockerfile-base.production # Base image: FPM + Nginx + CLI
│ ├─ Dockerfile.production # Production: multi-stage Laravel build
│ ├─ source/ # ⚡ Git submodule — Laravel source
│ │ ├─ composer.json / package.json
│ │ ├─ artisan
│ │ └─ ...
│ ├─ conf/
│ │ ├─ nginx/template/default.conf.template
│ │ └─ supervisor/onepush-admin.conf
│ └─ data/php/
├─ database/
└─ docker-compose.yml.production┌──────────────────────────────────────────────────────────────────────────┐
│ MULTI-STAGE BUILD PIPELINE │
│ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ GIAI ĐOẠN 1 │ │ GIAI ĐOẠN 2 │ │ GIAI ĐOẠN 3 │ │
│ │ vendor │───▶│ node_base │───▶│ build │ │
│ │ • composer │ │ • npm │ │ • npm run │ │
│ │ install │ │ install │ │ build │ │
│ └─────────────┘ └─────────────┘ └──────┬──────┘ │
│ ┌──────────────────────┬────┴───────────────┐ │
│ ▼ ▼ ▼
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ cli │ │ fpm_server │ │ web_server │ │
│ │ • Artisan │ │ • PHP-FPM │ │ • Nginx │ │
│ │ • Horizon │ │ • Supervisor│ │ • Static │ │
│ │ • Queues │ │ │ │ assets │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
└──────────────────────────────────────────────────────────────────────────┘build/source/.env)ghcr.io/novuhq/novu). Không cần build custom — source code trong novu/build/source/ chỉ là monorepo gốc của Novu để tham khảo.| Container | Image | Port | Mục Đích |
|---|---|---|---|
| API | ghcr.io/novuhq/novu/api:2.3.0 | 3000 | REST API server |
| Worker | ghcr.io/novuhq/novu/worker:2.3.0 | — | Xử lý tác vụ nền |
| WebSocket | ghcr.io/novuhq/novu/ws:2.3.0 | 3002 | WebSocket server thời gian thực |
| Dashboard | ghcr.io/novuhq/novu/dashboard:2.3.0 | 4000 | Giao diện dashboard |
| Dịch Vụ | Mục Đích |
|---|---|
| MongoDB | Cơ sở dữ liệu chính cho Novu |
| Redis | Cache, queue, và pub/sub messaging |
OnePush/novu/
├─ build/
│ └─ source/ # Git submodule — Novu monorepo (chỉ tham khảo)
├─ .env.production # Biến môi trường cho production
├─ .env.development # Biến môi trường cho development
├─ docker-compose.yml.production # Compose: triển khai production
└─ docker-compose.yml.development # Compose: triển khai development.env.production)Lưu ý: Stack này sử dụng image chính thức của Novu từ ghcr.io/novuhq/novu. Không cần bước build custom. Để nâng cấp, chỉ cần cập nhật tag image trong.env.productionvà triển khai lại.
.env không bao giờ nhúng vào image — mount read-only khi runtime