Cloud Run با Firebase Hosting جفت کنید تا محتوای پویای خود را تولید و ارائه دهید یا APIهای REST را به عنوان میکروسرویس بسازید.
با استفاده از Cloud Run ، میتوانید یک برنامه را که در یک تصویر کانتینر بستهبندی شده است، مستقر کنید. سپس، با استفاده از Firebase Hosting ، میتوانید درخواستهای HTTPS را برای راهاندازی برنامه کانتینر شده خود هدایت کنید.
- Cloud Run از چندین زبان (از جمله Go، Node.js، Python و Java) پشتیبانی میکند و به شما انعطافپذیری لازم برای استفاده از زبان برنامهنویسی و چارچوب مورد نظر خود را میدهد.
- Cloud Run به طور خودکار و افقی تصویر کانتینر شما را برای مدیریت درخواستهای دریافتی مقیاسبندی میکند ، سپس با کاهش تقاضا، مقیاسبندی را کاهش میدهد.
- شما فقط هزینه CPU، حافظه و شبکه مصرفی در حین پردازش درخواست را پرداخت میکنید .
برای مثال، موارد استفاده و نمونههایی از Cloud Run که با Firebase Hosting یکپارچه شده است، به بررسی اجمالی بدون سرور ما مراجعه کنید.
این راهنما به شما نشان میدهد که چگونه:
- یک برنامه ساده Hello World بنویسید
- یک برنامه را کانتینرایز کنید و آن را در Artifact Registry آپلود کنید
- تصویر کانتینر را در Cloud Run مستقر کنید
- درخواستهای Hosting مستقیم به برنامه کانتینر شده شما
توجه داشته باشید که برای بهبود عملکرد ارائه محتوای پویا، میتوانید تنظیمات حافظه پنهان خود را به صورت اختیاری تنظیم کنید.
قبل از اینکه شروع کنی
قبل از استفاده از Cloud Run ، باید برخی کارهای اولیه از جمله راهاندازی حساب Cloud Billing ، فعال کردن API Cloud Run و نصب ابزار خط فرمان gcloud را انجام دهید.
صورتحساب پروژه خود را تنظیم کنید
Cloud Run سهمیه استفاده رایگان ارائه میدهد، اما برای استفاده یا امتحان کردن Cloud Run ، همچنان باید یک حساب Cloud Billing مرتبط با پروژه Firebase خود داشته باشید.
فعال کردن API و نصب SDK
فعال کردن Cloud Run API در کنسول Google APIs:
صفحه Cloud Run API را در کنسول Google APIs باز کنید.
وقتی از شما خواسته شد، پروژه Firebase خود را انتخاب کنید.
در صفحه Cloud Run API روی فعال کردن کلیک کنید.
Cloud SDK را نصب و راهاندازی کنید .
بررسی کنید که ابزار
gcloudبرای پروژه صحیح پیکربندی شده باشد:gcloud config list
مرحله ۱ : نوشتن نمونه برنامه
توجه داشته باشید که Cloud Run علاوه بر زبانهای نشان داده شده در نمونه زیر، از بسیاری از زبانهای دیگر نیز پشتیبانی میکند.
برو
یک دایرکتوری جدید به نام
helloworld-goایجاد کنید، سپس دایرکتوری را به آن تغییر دهید:mkdir helloworld-go
cd helloworld-go
یک فایل جدید با نام
helloworld.goایجاد کنید، سپس کد زیر را اضافه کنید:این کد یک وب سرور پایه ایجاد میکند که به پورت تعریف شده توسط متغیر محیطی
PORTگوش میدهد.
برنامه شما تکمیل شده و آماده کانتینر شدن و آپلود در Artifact Registry است.
نود جی اس
یک دایرکتوری جدید به نام
helloworld-nodejsایجاد کنید، سپس دایرکتوری را به آن تغییر دهید:mkdir helloworld-nodejs
cd helloworld-nodejs
یک فایل
package.jsonبا محتوای زیر ایجاد کنید:یک فایل جدید با نام
index.jsایجاد کنید، سپس کد زیر را اضافه کنید:این کد یک وب سرور پایه ایجاد میکند که به پورت تعریف شده توسط متغیر محیطی
PORTگوش میدهد.
برنامه شما تکمیل شده و آماده کانتینر شدن و آپلود در Artifact Registry است.
پایتون
یک دایرکتوری جدید به نام
helloworld-pythonایجاد کنید، سپس دایرکتوری را به آن تغییر دهید:mkdir helloworld-python
cd helloworld-python
یک فایل جدید با نام
app.pyایجاد کنید، سپس کد زیر را اضافه کنید:این کد یک وب سرور پایه ایجاد میکند که به پورت تعریف شده توسط متغیر محیطی
PORTگوش میدهد.
برنامه شما تکمیل شده و آماده کانتینر شدن و آپلود در Artifact Registry است.
جاوا
Java SE 8 یا بالاتر JDK و CURL را نصب کنید.
توجه داشته باشید که ما فقط برای ایجاد پروژه وب جدید در مرحله بعدی به این کار نیاز داریم. Dockerfile که بعداً توضیح داده خواهد شد، تمام وابستگیها را در کانتینر بارگذاری میکند.
از کنسول، یک پروژه وب خالی جدید با استفاده از cURL ایجاد کنید و سپس دستورات زیر را از حالت فشرده خارج کنید:
curl https://start.spring.io/starter.zip \ -d dependencies=web \ -d name=helloworld \ -d artifactId=helloworld \ -o helloworld.zipunzip helloworld.zip
این یک پروژه SpringBoot ایجاد میکند.
کلاس
SpringBootApplicationرا درsrc/main/java/com/example/helloworld/HelloworldApplication.javaبا اضافه کردن یک@RestControllerبرای مدیریت نگاشت/و همچنین اضافه کردن یک فیلد@Valueبرای ارائه متغیر محیطیTARGETبهروزرسانی کنید:این کد یک وب سرور پایه ایجاد میکند که به پورت تعریف شده توسط متغیر محیطی
PORTگوش میدهد.
برنامه شما تکمیل شده و آماده کانتینر شدن و آپلود در Artifact Registry است.
مرحله ۲ : یک برنامه را کانتینرایز کنید و آن را در Artifact Registry آپلود کنید
با ایجاد یک فایل جدید به نام
Dockerfileدر همان دایرکتوری فایلهای منبع، برنامه نمونه را کانتینرایز کنید. محتوای زیر را در فایل خود کپی کنید.برو
نود جی اس
پایتون
جاوا
با اجرای دستور زیر از دایرکتوری حاوی فایل داکر خود، تصویر کانتینر خود را با استفاده از Cloud Build بسازید:
gcloud builds submit --tag gcr.io/PROJECT_ID/helloworld
پس از موفقیت، یک پیام موفقیت (SUCCESS) حاوی نام تصویر مشاهده خواهید کرد.
(gcr.io/ PROJECT_ID /helloworld).
تصویر کانتینر اکنون در Artifact Registry ذخیره شده است و در صورت تمایل میتوان دوباره از آن استفاده کرد.
توجه داشته باشید که به جای Cloud Build ، میتوانید از یک نسخه محلی نصب شده Docker برای ساخت کانتینر خود به صورت محلی استفاده کنید.
مرحله 3 : تصویر کانتینر را در Cloud Run مستقر کنید
برای بهترین عملکرد، سرویس Cloud Run خود را با Hosting با استفاده از مناطق زیر در یک مکان قرار دهید:
-
us-west1 -
us-central1 -
us-east1 -
europe-west1 -
asia-east1
بازنویسیها به Cloud Run از Hosting در مناطق زیر پشتیبانی میشوند:
-
asia-east1 -
asia-east2 -
asia-northeast1 -
asia-northeast2 -
asia-northeast3 -
asia-south1 -
asia-south2 -
asia-southeast1 -
asia-southeast2 -
australia-southeast1 -
australia-southeast2 -
europe-central2 -
europe-north1 -
europe-southwest1 -
europe-west1 -
europe-west12 -
europe-west2 -
europe-west3 -
europe-west4 -
europe-west6 -
europe-west8 -
europe-west9 -
me-central1 -
me-west1 -
northamerica-northeast1 -
northamerica-northeast2 -
southamerica-east1 -
southamerica-west1 -
us-central1 -
us-east1 -
us-east4 -
us-east5 -
us-south1 -
us-west1 -
us-west2 -
us-west3 -
us-west4 -
us-west1 -
us-central1 -
us-east1 -
europe-west1 -
asia-east1
با استفاده از دستور زیر، آن را مستقر کنید:
gcloud run deploy --image gcr.io/PROJECT_ID/helloworld
وقتی از شما خواسته شد:
- یک منطقه را انتخاب کنید (برای مثال
us-central1) - نام سرویس را تأیید کنید (برای مثال،
helloworld) - برای اجازه دادن به فراخوانیهای احراز هویت نشده، به
Yپاسخ بده.
- یک منطقه را انتخاب کنید (برای مثال
چند لحظه صبر کنید تا عملیات نصب کامل شود. در صورت موفقیت، خط فرمان آدرس اینترنتی سرویس را نمایش میدهد. برای مثال:
https://helloworld- RANDOM_HASH -us-central1.a.run.appبا باز کردن URL سرویس در یک مرورگر وب، از کانتینر مستقر شده خود بازدید کنید.
مرحله بعدی به شما نشان میدهد که چگونه از طریق یک URL Firebase Hosting به این برنامه کانتینر شده دسترسی پیدا کنید تا بتواند محتوای پویا برای سایت میزبانی شده توسط فایربیس شما تولید کند.
مرحله ۴: درخواستهای میزبانی را مستقیماً به برنامه کانتینر شده خود هدایت کنید
با استفاده از قوانین بازنویسی ، میتوانید درخواستهایی را که با الگوهای خاص مطابقت دارند، به یک مقصد واحد هدایت کنید.
مثال زیر نحوه هدایت تمام درخواستها از صفحه /helloworld در سایت Hosting شما را برای راهاندازی و اجرای نمونه کانتینر helloworld نشان میدهد.
مطمئن شوید که:
شما آخرین نسخه Firebase CLI را دارید.
شما Firebase Hosting را مقداردهی اولیه کردهاید.
برای دستورالعملهای دقیق در مورد نصب CLI و مقداردهی اولیه Hosting ، به راهنمای شروع به کار Hosting مراجعه کنید.
فایل
firebase.jsonخود را باز کنید.پیکربندی
rewriteزیر را در بخشhostingاضافه کنید:"hosting": { // ... // Add the "rewrites" attribute within "hosting" "rewrites": [ { "source": "/helloworld", "run": { "serviceId": "helloworld", // "service name" (from when you deployed the container image) "region": "us-central1", // optional (if omitted, default is us-central1) "pinTag": true // optional (see note below) } } ] }
با اجرای دستور زیر از ریشه دایرکتوری پروژه خود، پیکربندی میزبانی خود را در سایت خود مستقر کنید:
firebase deploy --only hosting
با این ویژگی، میتوانید اطمینان حاصل کنید که نسخه سرویس Cloud Run شما برای تولید محتوای پویای سایتتان با منابع Hosting استاتیک و پیکربندی Hosting شما همگامسازی میشود. همچنین، این ویژگی به شما امکان میدهد بازنویسیهای خود را در کانالهای پیشنمایش Cloud Run on Hosting پیشنمایش کنید.
اگر
"pinTag": trueبه یک بلوکrunاز پیکربندیhosting.rewritesاضافه کنید، منابع و پیکربندی ثابت Hosting شما در زمان استقرار، به جدیدترین نسخه سرویس Cloud Run پین میشوند. اگر نسخهای از سایت خود را به عقب برگردانید، نسخه "پین شده" سرویس Cloud Run نیز به عقب برگردانده میشود.این ویژگی به برچسبهای Cloud Run متکی است که محدودیت ۱۰۰۰ برچسب در هر سرویس و ۲۰۰۰ برچسب در هر منطقه دارند. این بدان معناست که پس از صدها بار نصب، قدیمیترین نسخههای یک سایت ممکن است از کار بیفتند.
اکنون کانتینر شما از طریق URL های زیر قابل دسترسی است:
زیر دامنههای فایربیس شما:
PROJECT_ID .web.app/وPROJECT_ID .firebaseapp.com/هر دامنه سفارشی متصل:
CUSTOM_DOMAIN /
برای جزئیات بیشتر در مورد قوانین بازنویسی، به صفحه پیکربندی Hosting مراجعه کنید. همچنین میتوانید در مورد ترتیب اولویت پاسخها برای پیکربندیهای مختلف Hosting اطلاعات کسب کنید.
تست به صورت محلی
در طول توسعه، میتوانید تصویر کانتینر خود را به صورت محلی اجرا و آزمایش کنید. برای دستورالعملهای دقیق، به مستندات Cloud Run مراجعه کنید.
مراحل بعدی
با استفاده از Firebase Admin SDK با سایر سرویسهای Firebase تعامل داشته باشید.
درباره Cloud Run ، از جمله راهنماهای دقیق نحوه راهاندازی، مدیریت و پیکربندی کانتینرها، بیشتر بیاموزید.
قیمتگذاری ، سهمیهها و محدودیتهای Cloud Run را بررسی کنید.