Cloud Run را با Firebase Hosting جفت کنید تا محتوای پویایتان را تولید و ارائه کنید یا میاناهای برنامهسازی کاربردی 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، فعال کردن
میانای برنامهسازی کاربردی Cloud Run، و نصب ابزار خط فرمان gcloud.
راهاندازی صورتحساب برای پروژه
Cloud Run سهمیه استفاده رایگان ارائه میدهد، اما برای استفاده یا امتحان کردن Cloud Run، همچنان باید حساب Cloud Billing مرتبط با پروژه Firebase خود داشته باشید.
فعال کردن API و نصب کیت توسعه نرمافزار
Cloud Run API را در کنسول Google APIs فعال کنید:
Cloud Runصفحه API را در کنسول Google APIs باز کنید.
وقتی درخواست شد، پروژه Firebase خود را انتخاب کنید.
در صفحه میانای برنامهسازی کاربردی Cloud Run، روی فعال کردن کلیک کنید.
نصب و مقداردهی اولیه کیت توسعه نرمافزار Cloud.
بررسی کنید که ابزار
gcloudبرای پروژه صحیح پیکربندی شده باشد:gcloud config list
مرحله ۱: نوشتن برنامه نمونه
توجه داشته باشید که Cloud Run علاوهبر زبانهای نشاندادهشده در نمونه زیر، از بسیاری از زبانهای دیگر پشتیبانی میکند.
رفتن
دایرکتوری جدیدی بهنام
helloworld-goایجاد کنید، سپس دایرکتوری را به آن تغییر دهید:mkdir helloworld-go
cd helloworld-go
- فایل جدیدی بهنام
helloworld.goایجاد کنید، سپس کد زیر را اضافه کنید:
این کد یک سرور وب پایه ایجاد میکند که به درگاه تعریفشده توسط متغیر محیطی
PORTگوش میدهد.- فایل جدیدی بهنام
برنامهتان آماده است و آماده است تا در کانتینر قرار گیرد و در Artifact Registry بارگذاری شود.
Node.js
دایرکتوری جدیدی بهنام
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 ایجاد کنید، سپس فرمانهای unzip:
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در همان دایرکتوری فایلهای منبع، برنامه نمونه را کانتینری کنید. محتوای زیر را در فایل خود کپی کنید.رفتن
Node.js
پایتون
جاوا
با اجرای فرمان زیر از دایرکتوری حاوی Dockerfile، تصویر محفظه خود را بااستفاده از Cloud Build بسازید:
gcloud builds submit --tag gcr.io/PROJECT_ID/helloworld
درصورت موفقیت، پیام «موفقیت» حاوی نام تصویر را خواهید دید
(gcr.io/PROJECT_ID/helloworld).
اکنون تصویر محفظه در Artifact Registry ذخیره شده است و درصورت تمایل میتوانید دوباره از آن استفاده کنید.
توجه داشته باشید که بهجای Cloud Build، میتوانید از نسخه نصبشده محلی Docker برای ساختن کانتینر بهصورت محلی استفاده کنید.
مرحله ۳: تصویر محفظه را در Cloud Run مستقر کنید
بااستفاده از فرمان زیر پیادهسازی کنید:
gcloud run deploy --image gcr.io/PROJECT_ID/helloworld
وقتی درخواست شد:
- منطقهای را انتخاب کنید (برای مثال
us-central1) - نام سرویس را تأیید کنید (برای مثال،
helloworld) Yرا برای اجازه دادن به فراخوانیهای تأییدنشده پاسخ دهید
- منطقهای را انتخاب کنید (برای مثال
چند لحظه صبر کنید تا استقرار تکمیل شود. درصورت موفقیت، خط فرمان نشانی وب سرویس را نمایش میدهد. برای مثال:
https://helloworld-RANDOM_HASH-us-central1.a.run.app با باز کردن نشانی وب سرویس در مرورگر وب، از محفظه مستقرشدهتان بازدید کنید.
مرحله بعدی شما را راهنمایی میکند که چگونه ازطریق Firebase Hosting نشانی وب به این برنامه کانتینریشده دسترسی پیدا کنید تا بتواند محتوای پویا برای سایت میزبانیشده در Firebase شما تولید کند.
مرحله ۴: هدایت کردن درخواستهای میزبانی به برنامه کانتینریشده
با قوانین بازنویسی، میتوانید درخواستهایی را که با الگوهای خاصی مطابقت دارند به یک مقصد هدایت کنید.
مثال زیر نشان میدهد که چگونه همه درخواستها را از صفحه
/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
اکنون محفظه شما ازطریق نشانیهای وب زیر قابلدسترسی است:
زیردامنههای Firebase شما:
PROJECT_ID.web.app/وPROJECT_ID.firebaseapp.com/هرگونه دامنه سفارشی متصلشده:
CUSTOM_DOMAIN/
برای جزئیات بیشتر درباره قوانین بازنویسی، به صفحه پیکربندی Hosting بروید. همچنین میتوانید درباره ترتیب اولویت پاسخها برای پیکربندیهای مختلف Hosting بیشتر بدانید.
آزمایش محلی
درطول توسعه، میتوانید تصویر محفظه را بهصورت محلی اجرا و آزمایش کنید. برای دستورالعملهای دقیق، به Cloud Run اسناد مراجعه کنید.
مراحل بعدی
ذخیره کردن در حافظه نهان محتوای پویا در CDN جهانی.
تعامل با دیگر سرویسهای Firebase بااستفاده از Firebase Admin SDK.
درباره Cloud Run بیشتر بدانید، ازجمله راهنماهای گامبهگام دقیق برای راهاندازی، مدیریت، و پیکربندی محفظهها.
قیمتگذاری و سهمیهها و محدودیتهای Cloud Run را مرور کنید.