1. Admin + API + Tool
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. Admin + API + Tool

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

Tài Liệu Triển Khai Dự Án Check#

Docker  Vue.js  Laravel  Bun

Triển Khai Dự Án Check Production

🔥 Tổng Quan#

Tài liệu này mô tả quy trình xây dựng và triển khai cho dự án Check chạy trên Docker trong môi trường production. Dự án Check bao gồm ba dịch vụ chính, trong đó:
Admin và API mỗi dịch vụ có 2 thành phần Manual và Auto chạy trên môi trường AWS.
Tool-v2 dịch vụ có 2 thành phần Check và Record chạy trên mồi trường khác AWS.
Dịch VụThành PhầnCông NghệRuntimeMục Đích
Admincheck-domainVue.js (Vite + TypeScript)Nginx (static)Dashboard quản trị kiểm tra domain
Admincheck-auto-monitorVue.js (Vite + TypeScript)Nginx (static)Dashboard quản trị auto-monitor
APIcheck-domainLaravel (PHP)PHP-FPM + NginxAPI backend kiểm tra domain
APIcheck-auto-monitorLaravel (PHP)PHP-FPM + NginxAPI backend auto-monitoring
Tool-v2Check-DomainBun (TypeScript)Bun + Supervisor + ChromeTự động: kiểm tra domain
Tool-v2Record-VideoBun (TypeScript)Bun + Supervisor + ChromeTự động: quay video

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 (API)AWS RDSMySQL cho Laravel API
Cơ sở dữ liệu (Tool)MongoDBDocument database cho Check & Record tools
CacheElastiCacheRedis cache cho session, queue, và cache driver

📖 Tài Liệu Tham Khảo#

Bạn có thể xem tài liệu tại docs.docker.com và các câu hỏi thường gặp tại đây.

🏢 Dịch Vụ Admin#

Dịch vụ Admin có hai thành phần độc lập, mỗi thành phần có Dockerfile, submodule source code và triển khai riêng:
Thành PhầnSourceDockerfileECR
check-domainadmin/build/check-domain/Dockerfile-check-domain.productiontools/check-admin-prod
check-auto-monitoradmin/build/check-auto-monitor/Dockerfile-check-auto-monitor.productiontools/check-admin-auto-monitor-prod

Tech Stack (chung)#

Framework: Vue.js với Vite + TypeScript
Xây dựng: npm install → npm run build:prod
Runtime: Nginx Alpine (phục vụ file tĩnh)

Cấu Trúc Dự Án#

Check/admin/
├─ build/
│  ├─ Dockerfile-check-domain.production           # Production: check-domain → Nginx
│  ├─ Dockerfile-check-domain.development          # Development: check-domain
│  ├─ Dockerfile-check-auto-monitor.production     # Production: auto-monitor → Nginx
│  ├─ Dockerfile-check-auto-monitor.development    # Development: auto-monitor
│  ├─ check-domain/                                # ⚡ Git submodule — check-domain Vue.js source
│  │  ├─ package.json
│  │  ├─ vite.config.ts
│  │  ├─ tailwind.config.ts
│  │  ├─ src/
│  │  └─ ...
│  ├─ check-auto-monitor/                          # ⚡ Git submodule — auto-monitor Vue.js source
│  │  ├─ package.json
│  │  ├─ vite.config.ts
│  │  ├─ tailwind.config.ts
│  │  ├─ src/
│  │  └─ ...
│  └─ conf/
│     └─ nginx/
│        ├─ common/nginx.conf                      # Cấu hình Nginx toàn cục
│        └─ default.conf                           # Cấu hình server block
├─ .env-check-domain.production                    # Biến Docker Compose: check-domain
├─ .env-check-auto-monitor.production              # Biến Docker Compose: auto-monitor
├─ docker-compose.yml.check-domain-production      # Compose: check-domain
└─ docker-compose.yml.check-auto-monitor-production # Compose: auto-monitor

A. Thành Phần: check-domain#

Xây dựng & Đẩy Image#

Triển Khai#

B. Thành Phần: check-auto-monitor#

Xây dựng & Đẩy Image#

Triển Khai#


🔌 Dịch Vụ API#

Dịch vụ API có hai thành phần độc lập, mỗi thành phần có Dockerfile, submodule source code và triển khai riêng:
Thành PhầnSourceDockerfileECR
check-domainapi/build/check-domain/Dockerfile-check-domain.productiontools/check-api-prod
check-auto-monitorapi/build/check-auto-monitor/Dockerfile-check-auto-monitor.productiontools/check-api-auto-monitor-prod

Tech Stack (chung)#

Framework: Laravel (PHP)
Xây dựng: Multi-stage — Composer install → npm install → npm build
Runtime: PHP-FPM + Nginx (nhiều container)
Cơ sở dữ liệu: AWS RDS (MySQL)
Cache: AWS ElastiCache (Redis)

Cấu Trúc Dự Án#

Check/api/
├─ build/
│  ├─ Dockerfile-base.production                   # Base image: FPM + Nginx + CLI (chung)
│  ├─ Dockerfile-check-domain.production           # Production: check-domain Laravel build
│  ├─ Dockerfile-check-domain.development          # Development: check-domain
│  ├─ Dockerfile-check-auto-monitor.production     # Production: auto-monitor Laravel build
│  ├─ Dockerfile-check-auto-monitor.development    # Development: auto-monitor
│  ├─ check-domain/                                # ⚡ Git submodule — check-domain Laravel source
│  │  ├─ composer.json / package.json
│  │  ├─ artisan
│  │  ├─ app/ / routes/
│  │  └─ ...
│  ├─ check-auto-monitor/                          # ⚡ Git submodule — auto-monitor Laravel source
│  │  ├─ composer.json / package.json
│  │  ├─ artisan
│  │  ├─ app/ / routes/
│  │  └─ ...
│  ├─ conf/
│  │  ├─ nginx/template/default.conf.template      # Template Nginx server block
│  │  └─ supervisor/check-api.conf                 # Cấu hình Supervisor cho PHP-FPM
│  └─ data/
│     └─ php/
│        ├─ php.ini                                # Cấu hình PHP tùy chỉnh
│        └─ php-fpm.conf                           # Cấu hình PHP-FPM pool
├─ database/                                       # Migration/seed database
├─ .env-check-domain.production                    # Biến Docker Compose: check-domain
├─ .env-check-auto-monitor.production              # Biến Docker Compose: auto-monitor
├─ docker-compose.yml.check-domain-production      # Compose: check-domain
└─ docker-compose.yml.check-auto-monitor-production # Compose: auto-monitor

Pipeline Xây dựng Multi-Stage#

Cả hai thành phần chia sẻ cùng pipeline build multi-stage:
┌──────────────────────────────────────────────────────────────────────────┐
│                      PIPELINE BUILD MULTI-STAGE                          │
│                                                                          │
│  ┌─────────────┐    ┌─────────────┐    ┌─────────────┐                   │
│  │ GIAI ĐOẠN 1 │    │ GIAI ĐOẠN 2 │    │ GIAI ĐOẠN 3 │                   │
│  │   vendor    │───▶│  node_base  │───▶│    build    │                   │
│  │             │    │             │    │             │                   │
│  │ • composer  │    │ • Copy từ   │    │ • npm run   │                   │
│  │   install   │    │   vendor    │    │   build     │                   │
│  │ • PHP deps  │    │ • npm       │    │ • Assets    │                   │
│  │             │    │   install   │    │   đã build  │                   │
│  └─────────────┘    └─────────────┘    └──────┬──────┘                   │
│                                               │                          │
│                    ┌──────────────────────┬────┴───────────────┐         │
│                    ▼                      ▼                    ▼         │
│             ┌─────────────┐       ┌─────────────┐      ┌─────────────┐   │
│             │ GIAI ĐOẠN 4 │       │ GIAI ĐOẠN 5 │      │ GIAI ĐOẠN 6 │   │
│             │     cli     │       │ fpm_server  │      │ web_server  │   │
│             │             │       │             │      │             │   │
│             │ • Laravel   │       │ • PHP-FPM   │      │ • Nginx     │   │
│             │ • Artisan   │       │ • Toàn bộ   │      │ • Chỉ thư   │   │
│             │ • Queues    │       │   ứng dụng  │      │   mục       │   │
│             │             │       │ • Supervisor│      │   public/   │   │
│             └─────────────┘       └─────────────┘      └─────────────┘   │
└──────────────────────────────────────────────────────────────────────────┘

Cấu Hình#

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

A. Thành Phần: check-domain#

Xây dựng & Đẩy Image#

Triển Khai#

B. Thành Phần: check-auto-monitor#

Xây dựng & Đẩy Image#

Triển Khai#


🛠️ Dịch Vụ Tool-v2#

Dịch vụ Tool-v2 có hai thành phần độc lập, mỗi thành phần có Dockerfile, submodule source code và triển khai riêng:
Thành PhầnSourceDockerfileECR
Check-Domaintool-v2/build/check-domain/Dockerfile-checkcheck/tool-v2-check-domain-prod
Record-Videotool-v2/build/recordvideo-domain/Dockerfile-recordvideocheck/tool-v2-recordvideo-domain-prod

Tech Stack (chung)#

Framework: Bun (TypeScript)
Xây dựng: bun install → bun run build → bun run compile
Runtime: Bun + Supervisor + Google Chrome Stable
Cơ sở dữ liệu: MongoDB

Cấu Trúc Dự Án#

Check/tool-v2/
├─ build/
│  ├─ Dockerfile-base                              # Base image: Supervisor + Chrome (chung)
│  ├─ Dockerfile-check                             # Check-Domain production image
│  ├─ Dockerfile-check.development                 # Check-Domain development image
│  ├─ Dockerfile-recordvideo                       # Record-Video production image
│  ├─ Dockerfile-recordvideo.development           # Record-Video development image
│  ├─ check-domain/                                # ⚡ Git submodule — Check source (Bun)
│  │  ├─ package.json
│  │  ├─ .env / .env.example
│  │  └─ src/
│  ├─ recordvideo-domain/                          # ⚡ Git submodule — Record source (Bun)
│  │  ├─ package.json
│  │  ├─ .env / .env.example
│  │  └─ src/
│  └─ conf/
│     └─ supervisor/
│        ├─ check-tool.conf.production             # Cấu hình Supervisor: Check-Domain
│        └─ check-recordvideo-tool.conf.production # Cấu hình Supervisor: Record-Video
├─ docs/
│  ├─ swap-memory/README.md
│  └─ vi-VN/README.md
├─ media/                                          # Media cho tài liệu
├─ .env-check.production                           # Biến Docker Compose: Check-Domain
├─ .env-recordvideo.production                     # Biến Docker Compose: Record-Video
├─ docker-compose-check.yml.production             # Compose: Check-Domain
├─ docker-compose-recordvideo.yml.production       # Compose: Record-Video
└─ README.md

Yêu Cầu Tiên Quyết#

Công CụPhiên Bản Tối ThiểuMục Đích
Docker≥ 24.0.0Quản lý container
Google Chrome Stable≥ 130.0.0Chrome headless cho tự động hoá
MongoDB≥ 7Cơ sở dữ liệu

Hạ Tầng (Server Production)#

Tài NguyênTối ThiểuKhuyến Nghị
CPU8 Core8 Core
RAM8 GB8 GB
SWAP2 GB2 GB
Ổ cứng65 GB65 GB
OSUbuntu ≥ 22.04Ubuntu ≥ 24.04
Lưu ý: Bộ nhớ swap rất quan trọng cho Tool-v2 vì chạy 22-25 tiến trình Chrome đồng thời để kiểm tra domain. Xem hướng dẫn cài đặt swap.

Cấu Hình#

Thiết Lập Cơ Sở Dữ Liệu MongoDB#

Cả hai thành phần đều dùng MongoDB. Tạo user riêng cho mỗi thành phần:

Base Image (chung)#

A. Thành Phần: Check-Domain#

Biến Môi Trường Ứng Dụng (build/check-domain/.env)#

Xây dựng & Đẩy Image#

Triển Khai#

B. Thành Phần: Record-Video#

Biến Môi Trường Ứng Dụng (build/recordvideo-domain/.env)#

Xây dựng & Đẩy Image#

Triển Khai#


🚀 Triển Khai Chung#

Bước 1: Tạo Docker Networks#

Bước 2: Kiểm Tra Triển Khai#

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

1.
.env không bao giờ được nhúng vào image — được mount dưới dạng read-only volume khi runtime
2.
Container non-root — tất cả dịch vụ chạy dưới user không đặc quyền (UID: 1200)
3.
Supervisor quản lý — các dịch vụ được quản lý bởi Supervisor với khả năng auto-restart
4.
Health checks — Health của FPM được giám sát, Web service chỉ khởi động sau khi FPM healthy

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

Tài liệu Docker
Triển khai Laravel
Tài liệu Bun
Tài liệu Vue.js
Hướng dẫn AWS ECR
Cài đặt Swap Memory
Modified at 2026-03-21 09:02:20
Next
Tài liệu triển khai dịch vụ Search cho dự án Check
Built with