Tài liệu triển khai dự án KSport API
Tài Liệu Triển Khai ksport-api — Golang trên Docker#
Triển Khai Golang API Service trên Docker với AWS
🔎 Tổng Quan#
Dự án ksport-api là một service API Golang đơn, chạy trên Docker và quản lý bởi Supervisor. Sử dụng pipeline build multi-stage để biên dịch Go binary và đóng gói vào image production nhẹ trên AWS ECR.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ư |
| Process Manager | Supervisor | Quản lý tiến trình Go binary trong container |
Chi Tiết Dự Án#
| Mục | Giá trị |
|---|
| ECR Repository | sports/ksport-api-prod |
| Base Image ECR | sports/ksport-api-base-prod:latest |
| Source Branch | ksport-golang-develop |
| Submodule Path | build/source-ksport-golang |
| Port | 50001 |
🏗 Tổng Quan Kiến Trúc#
Cấu Trúc Thư Mục#
ksport-api/
├── build/
│ ├── Dockerfile-ksport-golang.production # Build multi-stage (Go → base image)
│ ├── conf/ # Cấu hình Supervisor
│ └── source-ksport-golang/ # Git submodule → source code
├── .env-ksport-golang.production # Biến môi trường production
├── docker-compose.yml-ksport-golang.production # Docker Compose cho production
└── docs/ # Tài liệu
Pipeline Build Multi-Stage#
┌──────────────────────────────────────────────────────────────────────────┐
│ PIPELINE BUILD MULTI-STAGE — KSPORT-API │
│ │
│ ┌────────────────────┐ │
│ │ builder │ │
│ │ │ │
│ │ • golang:latest │ │
│ │ • go mod download │ │
│ │ • go build │ │
│ │ → ksport-api │ │
│ └────────┬───────────┘ │
│ │ │
│ ▼ │
│ ┌────────────────────┐ │
│ │ production │ │
│ │ (BASE_IMAGE) │ │
│ │ │ │
│ │ • Supervisor │ │
│ │ • ksport-api bin │ │
│ │ • Non-root user │ │
│ └────────┬───────────┘ │
│ │ │
│ ▼ │
│ ┌────────────────────┐ │
│ │ ECR Push │ │
│ │ :latest │ │
│ └────────────────────┘ │
└──────────────────────────────────────────────────────────────────────────┘
📦 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 | 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 |
⚙ Cấu Hình#
Bước 1: Clone Repository và Khởi Tạo Submodule#
Bước 2: Cấu Hình Biến Môi Trường#
Bước 3: Cấu Hình Source .env#
🏭 Build & Đẩy Image Lên AWS ECR#
Bước 1: Đăng Nhập AWS ECR#
Bước 2: Build Base Image (nếu cần cập nhật)#
Bước 3: Build & Push Production Image#
🚀 Triển Khai Lên Production#
Bước 1: Chuẩn Bị Trên Server Production#
Bước 2: Đăng Nhập ECR và Triển Khai#
Bước 3: Kiểm Tra Trạng Thái#
📋 Tham Khảo Cấu Hình Runtime#
Volume Mounts#
| Đường dẫn mount (Container) | Nguồn | Chế độ | Mục đích |
|---|
/app/.env | build/source-ksport-golang/.env | RO | Biến môi trường ứng dụng |
Networks#
| Network | Mục đích |
|---|
prod-network | Giao tiếp services production |
backend-network | Giao tiếp services backend |
Modified at 2026-03-22 02:11:10