Trong bài viết này, chúng ta sẽ tìm hiểu cách deploy một ứng dụng Next.js lên VPS bằng Docker Compose và Caddy. Đây là hướng dẫn dành cho những ai đang tìm cách triển khai website bán hàng với cấu hình VPS 2 GB RAM.
Để deploy Next.js, bạn cần một VPS với tối thiểu 2 GB RAM. Đây là mức tối thiểu để đảm bảo ứng dụng của bạn chạy ổn định mà không gặp vấn đề về bộ nhớ. Bạn có thể tham khảo dịch vụ Cài đặt & deploy VPS của K-Source để có thêm lựa chọn.
Đầu tiên, bạn cần cài đặt Docker và Docker Compose trên VPS của mình:
Cập nhật hệ thống và cài đặt các gói cần thiết:
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
Thêm Docker repository và cài đặt Docker:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get update
sudo apt-get install docker-ce
Cài đặt Docker Compose:
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
Với Dockerfile và docker-compose.yml có sẵn từ K-Source, bạn có thể build và deploy dễ dàng:
Build image trên CI (khuyến nghị dùng GitHub Actions) để tránh hết RAM trên VPS:
docker build -t my-nextjs-app .
docker push my-docker-repo/my-nextjs-app
Trên VPS, pull image đã build:
docker pull my-docker-repo/my-nextjs-app
Chạy Docker Compose để khởi động ứng dụng:
docker-compose up -d
Caddy sẽ được sử dụng để cấp chứng chỉ SSL tự động và làm reverse proxy cho ứng dụng của bạn:
Tạo file Caddyfile với nội dung:
yourdomain.com {
reverse_proxy localhost:3000
}
Khởi động Caddy:
docker run -d -p 80:80 -p 443:443 -v /path/to/Caddyfile:/etc/caddy/Caddyfile caddy
Để cập nhật ứng dụng mà không bị downtime, bạn có thể sử dụng Docker Compose với các bước sau:
Pull image mới từ registry:
docker-compose pull
Chạy lại container:
docker-compose up -d
Đảm bảo bạn thường xuyên backup dữ liệu để phục hồi khi cần thiết:
docker-compose exec để sao lưu dữ liệu từ container.Có cần phải có kiến thức Docker để triển khai không?
Không cần quá nhiều kiến thức chuyên sâu, chỉ cần làm theo hướng dẫn là đủ.
Tại sao nên dùng Caddy thay vì Nginx hay Apache?
Caddy tự động cấp SSL và dễ cấu hình hơn, phù hợp cho deploy nhanh.
Làm sao để cập nhật mà không bị downtime?
Sử dụng docker-compose pull và up -d để cập nhật phiên bản mới nhất mà không phải dừng dịch vụ.
Để triển khai nhanh chóng, bạn có thể tham khảo thêm các mẫu template có sẵn của K-Source.
Giảm giá, mã khuyến mãi và tổng cuối do máy chủ tính ở bước thanh toán.
Chào mừng trở lại — đơn hàng và source của bạn luôn ở đây.
Nhập email để nhận mã xác thực 6 số.
Nhập email, chúng tôi gửi mã 6 số để đặt lại mật khẩu.
25 Nguyen Van Linh, Q.7, TP.HCM