| Thành phần | Loại | Thư mục | ECR Repository |
|---|---|---|---|
| admin-api | Laravel FPM+Web+CLI | admin-api/ | sports/wsport-admin-api-prod |
| admin-client | Static Nginx | admin-client/ | sports/wsport-admin-client-prod |
┌──────────────────────────────────────────────────────────────────────────┐
│ 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 │
└──────────────────────────────────────────────────────────────────────────┘| Công cụ | Phiên bản tối thiểu | Mục đích |
|---|---|---|
| Docker | ≥ 24.0.0 | Build và chạy container |
| Docker Compose | ≥ 2.20.0 | Điều phối nhiều container |
| AWS CLI | ≥ 2.0 | Xác thực và push lên AWS ECR |
| Git | ≥ 2.30 | Quản lý source code & submodules |
| Mục | Giá trị |
|---|---|
| ECR Repository | sports/wsport-admin-api-prod |
| Source Branch | production |
| Services | fpm + web + cli |
| Submodule Path | admin-api/build/source |
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| Service | Image Tag | Port | Mục đích |
|---|---|---|---|
fpm | :fpm-latest | 9000 | PHP-FPM xử lý request Laravel |
web | :web-latest | 80 | Nginx phục vụ static files & proxy→FPM |
cli | :cli-latest | — | Laravel scheduler & queue worker |
| Volume | Đường dẫn Container | Chế độ | Services |
|---|---|---|---|
wsport_admin_api_storage-data | /opt/apps/laravel/storage | RW | fpm, web, cli |
wsport_admin_api_bootstrap-data | /opt/apps/laravel/bootstrap | RW | fpm, web, cli |
build/source/.env | /opt/apps/laravel/.env | RO | fpm, cli |
| Network | Mục đích |
|---|---|
proxy-network | Giao tiếp reverse proxy |
backend-network | Giao tiếp services backend |
bongda-cache-network | Kết nối Redis / ElastiCache |
bongda-database-network | Kết nối RDS / database |
| Mục | Giá trị |
|---|---|
| ECR Repository | sports/wsport-admin-client-prod |
| Source Branch | production |
| Services | web (chỉ Nginx) |
| Submodule Path | admin-client/build/source |
| Volumes | Không 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 — ADMIN CLIENT (STATIC) │
│ │
│ ┌────────────────────┐ │
│ │ builder │ │
│ │ │ │
│ │ • Node.js │ │
│ │ • npm install │ │
│ │ • npm run build │ │
│ │ → /dist │ │
│ └────────┬───────────┘ │
│ │ │
│ ▼ │
│ ┌────────────────────┐ │
│ │ production │ │
│ │ (nginx:alpine) │ │
│ │ │ │
│ │ • Nginx config │ │
│ │ • Static files │ │
│ │ • Port 80 │ │
│ └────────┬───────────┘ │
│ ▼ │
│ ┌────────────────────┐ │
│ │ ECR Push │ │
│ │ :latest │ │
│ └────────────────────┘ │
└──────────────────────────────────────────────────────────────────────────┘| Network | Mục đích |
|---|---|
proxy-network | Giao tiếp reverse proxy |