Thiết lập pipeline CI/CD zero-downtime: build multi-arch Docker image, đẩy lên private registry và trigger deploy qua SSH an toàn.
Deploy thủ công bằng cách SSH vào máy chủ, gõ git pull rồi chạy build trực tiếp trên VPS là thói quen mà nhiều lập trình viên mắc phải. Cách này gây nghẽn CPU lúc build và tiềm ẩn rủi ro sập web nếu phát sinh lỗi giữa chừng.
Thay vì build code trên VPS chạy production, chúng ta sử dụng runner miễn phí của GitHub Actions để kiểm thử, đóng gói Docker image, rồi chỉ kéo image hoàn chỉnh về VPS:
[Git Push] ➜ [GitHub Actions Runner] ➜ [GitHub Container Registry]
│
▼ (SSH Trigger)
[Production VPS Docker]name: Deploy Production
on:
push:
branches: [main]
jobs:
build-and-deploy
Đặt câu hỏi, chia sẻ ý kiến hoặc góp ý giải pháp kỹ thuật cùng cộng đồng.
Khám phá tiếp
Cách chạy PostgreSQL local bằng Docker Compose cho dự án Next.js và Prisma: volume dữ liệu, healthcheck, và lý do không nên cài Postgres trực tiếp lên máy.
Cấu hình Nginx reverse proxy cho Next.js: cache asset, nén gzip, giới hạn request và những lỗi timeout thường gặp khi chạy trên VPS nhỏ.
# Xem logs container sau khi vừa kéo image mới
docker compose logs -f --tail=50 app
# Kiểm tra trạng thái healthcheck
docker inspect --format='{{json .State.Health}}' app_containerVới quy trình này, bạn hoàn toàn tự tin nhấn nút Merge trên pull request. Mọi bài test được chạy tự động, image được cache tăng tốc và website được cập nhật trơn tru mà người dùng không gặp bất kỳ gián đoạn nào.