حالا هر کانتینری رو مستقیم روی Vercel بالا بیار
خلاصهٔ کاملتر
طبق این مقالهٔ Vercel، فرض کن یه سرور توی کانتینر داری؛ شاید یه سرویس Go، یه اپ Rails، یه API با Spring Boot یا یه وبسرور پشت nginx. این سرور HTTP حرف میزنه و رو یه پورت گوش میده و فقط یه جا برای اجرا میخواد. حالا کافیه یه فایل Dockerfile.vercel به پروژهت اضافه کنی تا Vercel ایمیج رو بسازه، ذخیره کنه، دیپلوی کنه و روی Fluid compute اسکیلش کنه.
نکتهٔ اصلی اینه که هیچ دیمنی رو باید لوکال اجرا کنی، هیچ رجیستریای رو باید راه بندازی و هیچ کلاستری رو هم لازم نیست نگه داری. یه Dockerfile دومرحلهای معمولی — که باینری رو کامپایل میکنه و بعد توی یه ایمیج مینیمال Alpine کپیش میکنه — کل چیزیه که نیاز داری:
FROM golang:1.24-alpine AS build
WORKDIR /src
COPY . .
RUN go build -o /server main.go
FROM alpine:3.20
COPY --from=build /server /server
CMD ["/server"]نویسنده میگه با همین دو تا فایل، لایوی. هر بار git push بزنی، ایمیج دوباره ساخته میشه و یه URL پیشنمایش تازه بهت میده. تو مثالشون از Go استفاده کردن، ولی هر استکی جواب میده — Rails، Spring Boot، Express، Laravel، ASP.NET، FastAPI و وبسرور پشت nginx همه به همین شکل دیپلوی میشن. تنها قانون اینه که سرورت رو $PORT گوش بده (که پیشفرضش ۸۰ ـه). اگه HTTP حرف بزنه، دیپلوی میشه؛ آره، حتی Java و حتی PHP.
یه کانتینر رو Vercel یه شهروند درجهیکه و رو همون پلتفرم و همون کامپیوتی اجرا میشه که فرانتاند و بقیهٔ سرویسات هستن. برای هر push یه دیپلوی پیشنمایش با URL مخصوص و قابلبازگشت میگیری، اسکیل هم دوطرفهست: ترافیک که میاد اسکیلاوت میشی و ترافیک که قطع میشه اینستنسها جمع میشن. لاگ، ترِیس و متریک هم همونجا توی داشبورد در دسترسه.
نکتهٔ مهم دربارهٔ سرعت اینه که Vercel ایمیجت رو به شکل یه «boot image بهینه» ذخیره میکنه؛ یه اسنپشات فشردهٔ دیسک کانتینر که برای استارت سریع تنظیم شده. موقع بوت، این اسنپشات استریم و درجا از حالت فشرده خارج میشه، پس سرورت میتونه قبل از اینکه کل ایمیج پایین بیاد شروع کنه به جوابدادن. Fluid compute هم اینستنس رو گرم نگه میداره و چندین درخواست رو از همونش سرو میکنه، پس هم پاسخدهی سرور گرم رو داری هم صورتحساب سروری که موقع بیکاری میخوابه.
هر کانتینر یه پروسهٔ بدونحالته: درخواست میگیره، جواب میده و چیزی بینش نگه نمیداره؛ حالت ماندگار باید توی یه سرویس جانبی مثل دیتابیس یا کش بشینه. به گفتهٔ نویسنده، ایدهٔ دیپلوی Dockerfile با یه دستور از ده سال پیش تو ذهنشون بوده، ولی زیرساخت لازم برای عالیدرآوردنش اون موقع وجود نداشت؛ حالا همون primitiveها که Buildها، Functionها و Sandboxها رو قدرت میدن، به کانتینرها هم رسیده.
نکات کلیدی:
- با یه فایل Dockerfile.vercel، Vercel ایمیج رو میسازه، ذخیره، دیپلوی و روی Fluid compute اسکیل میکنه
- نه دیمن لوکال لازمه، نه رجیستری، نه نگهداری کلاستر
- هر استکی که رو $PORT گوش بده کار میکنه (Go, Rails, Laravel, FastAPI و حتی PHP)
- هزینه فقط بابت زمان اجرای واقعی CPU حساب میشه، نه زمان بیکاری
- ایمیج بهشکل اسنپشات بهینه ذخیره و استریم میشه تا استارت سریع باشه




