VERCEL

Chạy bất kỳ Dockerfile nào trên Vercel

Bùi Đăng MinhThứ hai, 29/6/2026, 10:00 (GMT+7)4 phút đọc
Chạy bất kỳ Dockerfile nào trên Vercel

Bạn có một máy chủ trong một container. Có thể đó là dịch vụ Go, ứng dụng Rails, API Spring Boot hoặc máy chủ web đằng sau nginx. Nó nói HTTP. Nó lắng nghe trên một cổng. Nó chỉ cần một nơi nào đó để chạy.

Thêm tệp Dockerfile.vercel vào dự án của bạn và Vercel sẽ xây dựng, lưu trữ, triển khai và tự động điều chỉnh tỷ lệ hình ảnh trên điện toán Fluid, do đó, bạn chỉ phải trả tiền cho CPU mà mã của bạn sử dụng. Không có daemon để chạy cục bộ, đăng ký để thiết lập hoặc phân cụm để trông trẻ.

Nó hoạt động như thế nào

Đây là một máy chủ HTTP nhỏ trong Go, đang nghe trên $PORT:

1gói chính2
3nhập khẩu (4 "fmt"5 "net/http"6 "os"7)8
9func main() {10 cổng := os.Getenv("PORT")11 if port == "" {12 port = "80"13 }14
15 http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {16 fmt.Fprintln(w, "Xin chào từ một container trên Vercel 👋")17 })18
19 http.ListenAndServe(://+port, nil)20}

Máy chủ HTTP tối thiểu đọc cổng của nó từ $PORT và trả lời mọi yêu cầu.

Thêm tệp Dockerfile.vercel để xây dựng nó thành một hình ảnh nhỏ và chạy nó:

1TỪ golang:1.24-alpine NHƯ build2WORKDIR /src3COPY . .4RUN đi build -o /server main.go5
6TỪ Alpine:3.207COPY --from=build /server /server8CMD ["/server"]

Bản dựng hai giai đoạn biên dịch tệp nhị phân, sau đó sao chép nó thành hình ảnh Alpine tối thiểu chạy khi khởi động.

Sau đó triển khai:

▲ vercel triển khaiVercel CLI ✓ Xây dựng hình ảnh từ Dockerfile.vercel ✓ Hình ảnh được lưu trữ trong sổ đăng ký dự án của bạn ✓ Đã triển khai cho Fluid tính toánSản xuất: https://my-server.vercel.app

Một lệnh xây dựng hình ảnh, lưu trữ và gửi nó tới Fluid điện toán, sau đó in URL sản xuất.

Đó là nó. Hai tập tin và bạn đang hoạt động. Mỗi cú đẩy git sẽ xây dựng lại hình ảnh và cung cấp cho bạn một URL xem trước mới. Hoặc chạy vercel để triển khai mà không cần cam kết.

Chúng tôi đã sử dụng Go trong ví dụ này, nhưng mọi stack đều hoạt động. Rails, Spring Boot, Express, Laravel, ASP.NET, FastAPI và máy chủ web đằng sau nginx đều triển khai theo cùng một cách. Quy tắc duy nhất là máy chủ của bạn lắng nghe trên $PORT, mặc định là 80. Nếu nó nói HTTP, nó sẽ triển khai. Có, thậm chí cả Java. Và vâng, ngay cả PHP.

Những gì bạn nhận được

Một container trên Vercel là công dân hạng nhất. Nó chạy trên cùng một nền tảng và cùng một tính toán giống như giao diện người dùng và phần còn lại của các dịch vụ của bạn trên Vercel.

Triển khai bản xem trước cho mỗi lần đẩy: Mỗi cam kết đều có URL bất biến riêng mà bạn có thể mở, chia sẻ và quay lại.

Tự động điều chỉnh quy mô, theo cả hai hướng: Lưu lượng truy cập đến và bạn mở rộng quy mô. Giao thông dừng lại và phiên bản của bạn ngừng hoạt động. Bạn không bao giờ tính toán quy mô nhóm hoặc đoán số lượng đồng thời.

Định giá CPU hoạt động: Tính toán linh hoạt cho thời gian mã của bạn thực sự chạy, do đó, một máy chủ nhàn rỗi, được đặt trên một truy vấn chậm hoặc API ngược dòng, sẽ không đốt cháy CPU trong khi chờ đợi. Bạn trả tiền cho thời gian thực hiện chứ không phải thời gian treo tường.

Bao gồm khả năng quan sát: Nhật ký, dấu vết và số liệu cho vùng chứa của bạn nằm trong cùng một bảng điều khiển với mọi thứ khác mà bạn vận chuyển.

Một dự án, một miền: Vùng chứa của bạn nằm bên cạnh giao diện người dùng cũng như các dịch vụ khác của bạn và trao đổi riêng với họ qua mạng Vercel. stack đầy đủ của bạn được vận chuyển dưới dạng một lần triển khai.

Được xây dựng để bắt đầu nhanh chóng

Một vùng chứa chỉ hoạt động tốt khi có đủ thời gian để đáp ứng yêu cầu đầu tiên của nó.

Khi Vercel xây dựng hình ảnh của bạn, nó sẽ lưu trữ nó dưới dạng hình ảnh khởi động được tối ưu hóa, một ảnh chụp nhanh nén của đĩa chứa được điều chỉnh để khởi động nhanh.

Khi một vùng chứa khởi động, chúng tôi truyền trực tuyến ảnh chụp nhanh đó và giải nén nó theo yêu cầu, thay vì tải xuống toàn bộ hình ảnh trước khi mọi thứ chạy. Máy chủ của bạn có thể bắt đầu xử lý các yêu cầu trước khi có hình ảnh đầy đủ, do đó hình ảnh lớn hơn không cần phải tải xuống xong trước.

Nguồn / Original source: Vercel (@vercel & @addyosmani)