1. OnePush
Tool
  • Check
    • Admin + API + Tool
      • Tài liệu triển khai dự án Check
    • Search
      • Tài liệu triển khai dịch vụ Search cho dự án Check
    • Proxy
      • Tài liệu triển khai dịch vụ Proxy cho dự án Check
  • Traffic
    • Tài liệu triển khai dự án Traffic
  • OnePush
    • Tài liệu triển khai dự án OnePush
  • Landing-Pages
    • Tài liệu triển khai dự án Landing-Page
  • Marketing
    • Tài liệu triển khai dự án Marketing
  1. OnePush

Tài liệu triển khai dự án OnePush

Tài Liệu Triển Khai Dự Án OnePush — Docker#

Docker  Laravel  Novu

Triển Khai Dự Án OnePush Production với Docker
English   Tiếng Việt

🔥 Tổng Quan#

Tài liệu này mô tả quy trình build và triển khai dự án OnePush chạy trên Docker trong môi trường production. Dự án OnePush bao gồm hai dịch vụ chính:
Dịch VụCông NghệRuntimeMục Đích
AdminLaravel (PHP)PHP-FPM + NginxDashboard quản trị push notification
Stack NovuNode.js (pnpm + nx monorepo)Node.jsHạ tầng notification mã nguồn mở

Hạ Tầng Chính#

Thành PhầnDịch Vụ AWSMục Đích
Container ImagesAWS ECRRegistry Docker image riêng tư
Cơ sở dữ liệu (Admin)AWS RDSMySQL cho Laravel
CacheElastiCacheRedis cho session, queue, cache driver

🏢 Dịch Vụ Admin#

Tech Stack#

Framework: Laravel (PHP)
Xây dựng: Multi-stage — Composer install → npm install → npm build
Runtime: PHP-FPM + Nginx (nhiều container)
ECR: tools/onepush-admin-prod
Source: Git submodule tại admin/build/source/

Cấu Trúc Dự Án#

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

Xây dựng Pipeline#

┌──────────────────────────────────────────────────────────────────────────┐
│                        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    │   │
│             └─────────────┘       └─────────────┘      └─────────────┘   │
└──────────────────────────────────────────────────────────────────────────┘

Cấu Hình Laravel (build/source/.env)#

Xây dựng & Triển Khai#


📡 Dịch Vụ Stack Novu#

Tổng Quan#

Novu stack là hạ tầng notification tự host được triển khai sử dụng Docker image chính thức của Novu từ GitHub Container Registry (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.
Stack bao gồm 4 container:
ContainerImagePortMục Đích
APIghcr.io/novuhq/novu/api:2.3.03000REST API server
Workerghcr.io/novuhq/novu/worker:2.3.0—Xử lý tác vụ nền
WebSocketghcr.io/novuhq/novu/ws:2.3.03002WebSocket server thời gian thực
Dashboardghcr.io/novuhq/novu/dashboard:2.3.04000Giao diện dashboard

Phụ Thuộc#

Dịch VụMục Đích
MongoDBCơ sở dữ liệu chính cho Novu
RedisCache, queue, và pub/sub messaging

Cấu Trúc Dự Án#

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

Cấu Hình#

Biến Môi Trường (.env.production)#

Triển Khai#

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.production và triển khai lại.

🛡️ Các Thực Hành Bảo Mật#

1.
.env không bao giờ nhúng vào image — mount read-only khi runtime
2.
Container non-root — chạy dưới user không đặc quyền (UID: 1200)
3.
Supervisor quản lý — PHP-FPM với auto-restart
4.
Horizon & Queue — Laravel Horizon giám sát queue

📚 Tài Liệu Liên Quan#

Tài liệu Docker
Triển khai Laravel
Tài liệu Novu
Novu Self-Hosting
Hướng dẫn AWS ECR
Modified at 2026-03-21 09:03:52
Previous
Tài liệu triển khai dự án Traffic
Next
Tài liệu triển khai dự án Landing-Page
Built with