1. Sport Admin
Sport
  • Sport Site
    • Tài liệu triển khai dự án Sport Site
    • Tài liệu triển khai dự án Landing Page
    • Tài liệu triển khai dự án Newslooks
  • Sport API
    • Tài liệu triển khai dự án KSport API
    • Tài liệu triển khai dự án WSport API
    • Tài liệu triển khai dự án WSport API Game
  • Sport DB
    • Tài liệu triển khai dự án Sport DB
  • Sport Admin
    • Tài liệu triển khai dự án Sport Admin
  1. Sport Admin

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

Tài Liệu Triển Khai sport-admin — Laravel API & Static Client trên Docker#

   
Triển Khai Admin Panel: API (Laravel) + Client (Static Nginx) trên AWS
  

🔎 Tổng Quan#

Dự án sport-admin gồm hai thành phần tạo nên bảng quản trị:
Thành phầnLoạiThư mụcECR Repository
admin-apiLaravel FPM+Web+CLIadmin-api/sports/wsport-admin-api-prod
admin-clientStatic Nginxadmin-client/sports/wsport-admin-client-prod

Tổng Quan Kiến Trúc#

┌──────────────────────────────────────────────────────────────────────────┐
│                     MÔI TRƯỜNG PRODUCTION AWS                            │
│                                                                          │
│  ┌─────────────────────────┐       ┌─────────────────────────┐           │
│  │     admin-client        │       │       admin-api         │           │
│  │                         │       │                         │           │
│  │  ┌───────────────────┐  │       │  ┌──────┐ ┌──────┐      │           │
│  │  │   Nginx (Static)  │  │       │  │ FPM  │ │ Web  │      │           │
│  │  │  • Built SPA      │──┼──API──┼─▶│      │◀┤Nginx │      │           │
│  │  │  • Port 80        │  │       │  │ :9000│ │ :80  │      │           │
│  │  └───────────────────┘  │       │  └──────┘ └──────┘      │           │
│  │                         │       │  ┌──────┐               │           │
│  └─────────────────────────┘       │  │ CLI  │               │           │
│                                    │  │Sched.│               │           │
│                                    │  └──────┘               │           │
│                                    └─────────────────────────┘           │
│                                                                          │
│  Networks: proxy-network, backend-network,                               │
│            bongda-cache-network, bongda-database-network                 │
└──────────────────────────────────────────────────────────────────────────┘

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

Công cụPhiên bản tối thiểuMục đích
Docker≥ 24.0.0Build và chạy container
Docker Compose≥ 2.20.0Điều phối nhiều container
AWS CLI≥ 2.0Xác thực và push lên AWS ECR
Git≥ 2.30Quản lý source code & submodules

Phần 1 — Admin API (Laravel FPM+Web+CLI)#

🔎 Tổng Quan#

admin-api là backend API Laravel cho bảng quản trị sport, chạy với kiến trúc Docker 3 service: PHP-FPM, Nginx Web, và CLI (scheduler/queue worker). Thành phần này kết nối tới 4 networks bao gồm cache và database networks riêng.

Chi Tiết Dự Án#

MụcGiá trị
ECR Repositorysports/wsport-admin-api-prod
Source Branchproduction
Servicesfpm + web + cli
Submodule Pathadmin-api/build/source

Cấu Trúc Thư Mục#

admin-api/
├── build/
│   ├── Dockerfile-base.production          # Base image cho FPM/CLI
│   ├── Dockerfile.production               # Build multi-stage (FPM + Web + CLI)
│   ├── data/php/                           # Cấu hình PHP (php.ini, php-fpm.conf)
│   └── source/                             # Git submodule → source code
├── .env.production                         # Biến môi trường production
└── docker-compose.yml.production           # Docker Compose cho production

⚙ Cấu Hình#

Bước 1: Khởi Tạo Submodule#

Bước 2: Tạo Docker Volumes#

Bước 3: Cấu Hình Biến Môi Trường#

Bước 4: Cấu Hình Source .env#

🏭 Build & Đẩy Image Lên AWS ECR#

Đăng Nhập AWS ECR#

Build & Push Tất Cả Service Images#

Tham Khảo Runtime — Admin API#

ServiceImage TagPortMục đích
fpm:fpm-latest9000PHP-FPM xử lý request Laravel
web:web-latest80Nginx phục vụ static files & proxy→FPM
cli:cli-latest—Laravel scheduler & queue worker
VolumeĐường dẫn ContainerChế độServices
wsport_admin_api_storage-data/opt/apps/laravel/storageRWfpm, web, cli
wsport_admin_api_bootstrap-data/opt/apps/laravel/bootstrapRWfpm, web, cli
build/source/.env/opt/apps/laravel/.envROfpm, cli
NetworkMục đích
proxy-networkGiao tiếp reverse proxy
backend-networkGiao tiếp services backend
bongda-cache-networkKết nối Redis / ElastiCache
bongda-database-networkKết nối RDS / database

Phần 2 — Admin Client (Static Nginx)#

🔎 Tổng Quan#

admin-client là frontend static đã build sẵn cho bảng quản trị sport, phục vụ bởi một container Nginx đơn. Source code được build trong quá trình build Docker image (Node.js → static files).

Chi Tiết Dự Án#

MụcGiá trị
ECR Repositorysports/wsport-admin-client-prod
Source Branchproduction
Servicesweb (chỉ Nginx)
Submodule Pathadmin-client/build/source
VolumesKhông có

Cấu Trúc Thư Mục#

admin-client/
├── build/
│   ├── Dockerfile.production               # Multi-stage: Node.js build → Nginx
│   └── source/                             # Git submodule → source code
├── .env.production                         # Biến môi trường production
└── docker-compose.yml.production           # Docker Compose cho production

Pipeline Build#

┌──────────────────────────────────────────────────────────────────────────┐
│              PIPELINE BUILD — ADMIN CLIENT (STATIC)                      │
│                                                                          │
│  ┌────────────────────┐                                                  │
│  │     builder        │                                                  │
│  │                    │                                                  │
│  │  • Node.js         │                                                  │
│  │  • npm install     │                                                  │
│  │  • npm run build   │                                                  │
│  │    → /dist         │                                                  │
│  └────────┬───────────┘                                                  │
│           │                                                              │
│           ▼                                                              │
│  ┌────────────────────┐                                                  │
│  │   production       │                                                  │
│  │  (nginx:alpine)    │                                                  │
│  │                    │                                                  │
│  │  • Nginx config    │                                                  │
│  │  • Static files    │                                                  │
│  │  • Port 80         │                                                  │
│  └────────┬───────────┘                                                  │
│           ▼                                                              │
│  ┌────────────────────┐                                                  │
│  │    ECR Push        │                                                  │
│  │    :latest         │                                                  │
│  └────────────────────┘                                                  │
└──────────────────────────────────────────────────────────────────────────┘

⚙ Cấu Hình#

Khởi Tạo Submodule#

Cấu Hình Biến Môi Trường#

🏭 Build & Đẩy Image Lên AWS ECR#

Tham Khảo Runtime — Admin Client#

NetworkMục đích
proxy-networkGiao tiếp reverse proxy

🚀 Triển Khai Lên Production#

Triển Khai Admin API#

Thiết Lập Laravel Sau Triển Khai#

Triển Khai Admin Client#

Kiểm Tra Trạng Thái#

Modified at 2026-03-22 02:34:50
Previous
Tài liệu triển khai dự án Sport DB
Built with