Docker Deployment
Triển khai ứng dụng React + ASP.NET API + PostgreSQL + Redis bằng Docker trên Ubuntu
Kiến trúc hệ thống
Toàn bộ hệ thống được đóng gói trong Docker containers, chạy trên một máy chủ Ubuntu. Nginx đóng vai trò reverse proxy, phân phối request đến frontend và backend:
Thành phần trong stack
Hiểu rõ vai trò từng thành phần giúp bạn cấu hình và vận hành hiệu quả:
React Frontend
- Single Page Application (SPA)
- Build thành static files (HTML/CSS/JS)
- Serve bởi Nginx container
- Gọi API qua reverse proxy
ASP.NET API
- RESTful API endpoints
- Kết nối PostgreSQL qua EF Core
- Sử dụng Redis cho caching/session
- Chạy trên Kestrel server
PostgreSQL
- Lưu trữ dữ liệu persistent
- ACID compliant, reliable
- Data được mount vào volume
- Backup bằng pg_dump
Redis
- In-memory data store
- Cache API responses
- Session management
- Pub/Sub cho real-time
Yêu cầu hệ thống
Trước khi bắt đầu, đảm bảo máy chủ của bạn đáp ứng các yêu cầu sau:
Ubuntu 22.04 LTS hoặc 24.04 LTS (khuyến nghị bản LTS cho production).
Đảm bảo hệ thống đã được cập nhật: sudo apt update && sudo apt upgrade -y. Cần có quyền sudo
để cài đặt Docker và cấu hình firewall.
CPU: 2 cores trở lên (4 cores cho production)
RAM: 4 GB tối thiểu (8 GB khuyến nghị). PostgreSQL và Redis đều cần RAM — đặc biệt Redis lưu toàn bộ dữ liệu trong memory.
Disk: 20 GB SSD tối thiểu. Database sẽ tăng dần theo thời gian — dự phòng ít nhất 50 GB cho production.
IP tĩnh: Máy chủ cần có public IP tĩnh (hoặc Elastic IP trên cloud).
Domain name: Cần có domain trỏ về IP server để cấu hình SSL (ví dụ:
app.example.com).
Ports: Mở port 80 (HTTP), 443 (HTTPS), và 22 (SSH) trên firewall.
Docker Engine: Phiên bản 24.x trở lên (hướng dẫn cài ở trang tiếp theo).
Docker Compose: V2 (đi kèm Docker Engine, lệnh docker compose).
Git: Để clone source code lên server.
Certbot (optional): Để lấy SSL certificate miễn phí từ Let's Encrypt.
Quy trình triển khai
Tổng quan các bước từ khi có source code đến khi hệ thống chạy trên production:
Khám phá chi tiết
Chọn chủ đề bạn muốn tìm hiểu sâu hơn: