DevOps Guide

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:

🌐
Client
Browser / Mobile
Nginx
Reverse Proxy + SSL
↓ ↓
Docker Network
React
Static Files (Nginx)
ASP.NET API
REST API :5000
🗃
PostgreSQL
Database :5432
Redis
Cache :6379
Mỗi thành phần chạy trong một container riêng biệt, giao tiếp với nhau qua Docker internal network. Chỉ có Nginx được expose port ra ngoài (80/443), các service khác hoàn toàn cô lập.

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

Giao diện người dùng
  • 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

Backend xử lý logic
  • 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

Cơ sở dữ liệu chính
  • Lưu trữ dữ liệu persistent
  • ACID compliant, reliable
  • Data được mount vào volume
  • Backup bằng pg_dump

Redis

Cache & Session Store
  • 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 Server OS +

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.

Phần cứng tối thiểu Hardware +

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.

Network & Domain Infra +

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.

Software cần cài Tools +

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:

Chuẩn bị
Server + Docker
Build
Docker images
Configure
Env + Nginx
Deploy
docker compose up
Verify
Health check

Khám phá chi tiết

Chọn chủ đề bạn muốn tìm hiểu sâu hơn: