| Thành phần | Dịch vụ AWS | Mục đích |
|---|---|---|
| Container Images | AWS ECR | Registry Docker image riêng tư |
| Mục | Giá trị |
|---|---|
| ECR Repository | sports/wsport-api-game-prod |
| Source Branch | production |
| Services | fpm + web + cli |
| Volumes | wsport_api_game_storage-data, wsport_api_game_bootstrap-data |
wsport-api-game/
├── 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
└── docs/ # Tài liệu┌─────────────────────────────────────────────────────────────────────────┐
│ MÔI TRƯỜNG PRODUCTION AWS │
│ │
│ ┌─────────────────────────────────────────────────────────────────┐ │
│ │ Docker Host │ │
│ │ │ │
│ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ │
│ │ │ FPM Service │ │ Web Service │ │ CLI Service │ │ │
│ │ │ │ │ │ │ │ │ │
│ │ │ • PHP-FPM │ │ • Nginx │ │ • Scheduler │ │ │
│ │ │ • Laravel │◄─┤ • Static │ │ • Queue │ │ │
│ │ │ • .env (RO) │ │ • Proxy→FPM │ │ • .env (RO) │ │ │
│ │ │ • Port 9000 │ │ • Port 80 │ │ │ │ │
│ │ └──────┬───────┘ └──────────────┘ └──────┬───────┘ │ │
│ │ │ │ │ │
│ │ ▼ ▼ │ │
│ │ ┌──────────┐ ┌──────────┐ │ │
│ │ │ storage │ │ storage │ │ │
│ │ │bootstrap │ (shared volumes) │bootstrap │ │ │
│ │ └──────────┘ └──────────┘ │ │
│ └─────────────────────────────────────────────────────────────────┘ │
│ │
│ Networks: prod-network, backend-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 |
| 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_api_game_storage-data | /opt/apps/laravel/storage | RW | fpm, web, cli |
wsport_api_game_bootstrap-data | /opt/apps/laravel/bootstrap | RW | fpm, web, cli |
build/source/.env | /opt/apps/laravel/.env | RO | fpm, cli |
| Biến | Service | Mặc định | Mục đích |
|---|---|---|---|
SP_ENABLE_QUEUE | cli | false | Bật/tắt queue worker |
SP_ENABLE_SCHEDULE | cli | false | Bật/tắt task scheduler |
FPM_HOST | web | *.fpm:9000 | FPM upstream cho Nginx proxy |