Tài liệu triển khai dự án Check
Tài Liệu Triển Khai Dự Án Check#
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ần | Công Nghệ | Runtime | Mục Đích |
|---|
| Admin | check-domain | Vue.js (Vite + TypeScript) | Nginx (static) | Dashboard quản trị kiểm tra domain |
| Admin | check-auto-monitor | Vue.js (Vite + TypeScript) | Nginx (static) | Dashboard quản trị auto-monitor |
| API | check-domain | Laravel (PHP) | PHP-FPM + Nginx | API backend kiểm tra domain |
| API | check-auto-monitor | Laravel (PHP) | PHP-FPM + Nginx | API backend auto-monitoring |
| Tool-v2 | Check-Domain | Bun (TypeScript) | Bun + Supervisor + Chrome | Tự động: kiểm tra domain |
| Tool-v2 | Record-Video | Bun (TypeScript) | Bun + Supervisor + Chrome | Tự động: quay video |
Hạ Tầng Chính#
| 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 (API) | AWS RDS | MySQL cho Laravel API |
| Cơ sở dữ liệu (Tool) | MongoDB | Document database cho Check & Record tools |
| Cache | ElastiCache | Redis cache cho session, queue, và cache driver |
📖 Tài Liệu Tham Khảo#
🏢 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ần | Source | Dockerfile | ECR |
|---|
| check-domain | admin/build/check-domain/ | Dockerfile-check-domain.production | tools/check-admin-prod |
| check-auto-monitor | admin/build/check-auto-monitor/ | Dockerfile-check-auto-monitor.production | tools/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ần | Source | Dockerfile | ECR |
|---|
| check-domain | api/build/check-domain/ | Dockerfile-check-domain.production | tools/check-api-prod |
| check-auto-monitor | api/build/check-auto-monitor/ | Dockerfile-check-auto-monitor.production | tools/check-api-auto-monitor-prod |
Tech Stack (chung)#
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 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ần | Source | Dockerfile | ECR |
|---|
| Check-Domain | tool-v2/build/check-domain/ | Dockerfile-check | check/tool-v2-check-domain-prod |
| Record-Video | tool-v2/build/recordvideo-domain/ | Dockerfile-recordvideo | check/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ấ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ểu | Mục Đích |
|---|
| Docker | ≥ 24.0.0 | Quản lý container |
| Google Chrome Stable | ≥ 130.0.0 | Chrome headless cho tự động hoá |
| MongoDB | ≥ 7 | Cơ sở dữ liệu |
Hạ Tầng (Server Production)#
| Tài Nguyên | Tối Thiểu | Khuyến Nghị |
|---|
| CPU | 8 Core | 8 Core |
| RAM | 8 GB | 8 GB |
| SWAP | 2 GB | 2 GB |
| Ổ cứng | 65 GB | 65 GB |
| OS | Ubuntu ≥ 22.04 | Ubuntu ≥ 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#
Modified at 2026-03-21 09:02:20