אפשר להתאים בין Cloud Run ל-Firebase Hosting כדי ליצור תוכן דינמי ולהציג אותו, או כדי ליצור ממשקי API ל-REST כמיקרו-שירותים.
באמצעות Cloud Run אפשר לפרוס אפליקציה שארוזה בקובץ אימג' בקונטיינר. לאחר מכן, באמצעות Firebase Hosting, תוכלו להפנות בקשות HTTPS כדי להפעיל את האפליקציה הקונטיינרים.
- Cloud Run תומך במספר שפות (כולל Go, Node.js, Python ו-Java), כך שתוכלו להשתמש בשפת התכנות ובמסגרת התכנות שבחרתם.
- Cloud Runמתאים את קובץ האימג' בקונטיינר באופן אוטומטי ואופקי כדי לטפל בבקשות שהתקבלו, ולאחר מכן מבצע התאמה לאחור כשהביקוש יורד.
- אתם משלמים רק על השימוש במעבד, בזיכרון וברשתות במהלך הטיפול בבקשות.
לדוגמה, תרחישים לדוגמה ודוגמאות של Cloud Run המשולבים עם Firebase Hosting, כדאי לעיין בסקירה הכללית שלנו ללא שרת (serverless).
במדריך הזה נסביר איך:
- כתיבת אפליקציה פשוטה מסוג Hello World
- ארגון אפליקציה בקונטיינר והעלאה שלה אל Container Registry
- פורסים את קובץ האימג' של הקונטיינר ב-Cloud Run
- הפניית בקשות Hosting לאפליקציה בקונטיינרים
שימו לב שכדי לשפר את הביצועים של הצגת תוכן דינמי, אפשר לכוונן את הגדרות המטמון (אופציונלי).
לפני שמתחילים
לפני שמשתמשים ב-Cloud Run, צריך לבצע כמה משימות ראשוניות, כולל הגדרת חשבון Cloud Billing, הפעלת ה-API של Cloud Run והתקנה של כלי שורת הפקודה gcloud
.
הגדרת חיוב לפרויקט
ב-Cloud Run יש מכסת שימוש בחינם, אבל עדיין צריך להיות לכם חשבון Cloud Billing שמשויך לפרויקט Firebase כדי להשתמש בו או לנסות את Cloud Run.
הפעלת ה-API והתקנת ה-SDK
מפעילים את ה-API של Cloud Run במסוף Google APIs:
פותחים את דף ה-API של Cloud Run במסוף Google APIs.
כשמופיעה בקשה, בוחרים את הפרויקט ב-Firebase.
לוחצים על Enable בדף ה-API של Cloud Run.
מתקינים ומפעילים את Cloud SDK.
בודקים שהכלי
gcloud
מוגדר לפרויקט הנכון:gcloud config list
שלב 1: כותבים את האפליקציה לדוגמה
חשוב לזכור ש-Cloud Run תומך בשפות רבות אחרות, בנוסף לשפות שמוצגות בדוגמה הבאה.
Go
יוצרים ספרייה חדשה בשם
helloworld-go
, ואז עוברים אליה:mkdir helloworld-go
cd helloworld-go
יוצרים קובץ חדש בשם
helloworld.go
ומוסיפים את הקוד הבא:הקוד הזה יוצר שרת אינטרנט בסיסי שמקשיב ביציאה שמוגדרת על ידי משתנה הסביבה
PORT
.
האפליקציה מוכנה והיא מוכנה ליצירת קונטיינרים ולהעלאה שלה אל Container Registry.
Node.js
יוצרים ספרייה חדשה בשם
helloworld-nodejs
, ואז עוברים אליה:mkdir helloworld-nodejs
cd helloworld-nodejs
יוצרים קובץ
package.json
עם התוכן הבא:יוצרים קובץ חדש בשם
index.js
ומוסיפים את הקוד הבא:הקוד הזה יוצר שרת אינטרנט בסיסי שמקשיב ביציאה שמוגדרת על ידי משתנה הסביבה
PORT
.
האפליקציה מוכנה להעלאה ל-Container Registry בקונטיינר.
Python
יוצרים ספרייה חדשה בשם
helloworld-python
ומשנים אליה את הספרייה:mkdir helloworld-python
cd helloworld-python
יוצרים קובץ חדש בשם
app.py
ומוסיפים את הקוד הבא:הקוד הזה יוצר שרת אינטרנט בסיסי שמקשיב ביציאה שמוגדרת על ידי משתנה הסביבה
PORT
.
האפליקציה מוכנה להעלאה ל-Container Registry בקונטיינר.
Java
מתקינים את JDK של Java SE 8 ואילך ואת CURL.
חשוב לזכור שאנחנו צריכים לעשות זאת רק כדי ליצור את פרויקט האינטרנט החדש בשלב הבא. קובץ ה-Dockerfile, שמתואר בהמשך, יטמיע את כל יחסי התלות בקונטיינר.
במסוף, יוצרים פרויקט אינטרנט ריק חדש באמצעות cURL ואז מבטלים את הדחיסה של פקודות:
curl https://start.spring.io/starter.zip \ -d dependencies=web \ -d name=helloworld \ -d artifactId=helloworld \ -o helloworld.zip
unzip helloworld.zip
הפקודה הזו יוצרת פרויקט SpringBoot.
מעדכנים את המחלקה
SpringBootApplication
ב-src/main/java/com/example/helloworld/HelloworldApplication.java
על ידי הוספת@RestController
כדי לטפל במיפוי/
, וגם להוסיף שדה@Value
כדי לספק את משתנה הסביבהTARGET
:הקוד הזה יוצר שרת אינטרנט בסיסי שמקשיב ביציאה שמוגדרת על ידי משתנה הסביבה
PORT
.
האפליקציה מוכנה והיא מוכנה ליצירת קונטיינרים ולהעלאה שלה אל Container Registry.
שלב 2: הכנסת אפליקציה לקונטיינר והעלאה שלה אל Container Registry
כדי לארוז את האפליקציה לדוגמה בקונטיינר, יוצרים קובץ חדש בשם
Dockerfile
באותה ספרייה שבה נמצאים קובצי המקור. מעתיקים את התוכן הבא לקובץ.Go
Node.js
Python
Java
יוצרים את קובץ האימג' בקונטיינר באמצעות Cloud Build על ידי הרצת הפקודה הבאה מהספרייה שמכילה את קובץ ה-Docker:
gcloud builds submit --tag gcr.io/PROJECT_ID/helloworld
אם הפעולה תתבצע בהצלחה, תוצג הודעה על הצלחה עם שם התמונה
(gcr.io/PROJECT_ID/helloworld
).
קובץ האימג' של הקונטיינר מאוחסן עכשיו ב-Container Registry, וניתן לעשות בו שימוש חוזר אם רוצים.
הערה: במקום Cloud Build, אפשר להשתמש בגרסה מקומית של Docker כדי ליצור את הקונטיינר באופן מקומי.
שלב 3: פורסים את קובץ האימג' בקונטיינר ב-Cloud Run
פורסים באמצעות הפקודה הבאה:
gcloud run deploy --image gcr.io/PROJECT_ID/helloworld
כשמופיעה בקשה:
- בוחרים אזור (לדוגמה
us-central1
) - מאשרים את שם השירות (לדוגמה,
helloworld
) - משיבים
Y
כדי לאפשר הפעלות לא מאומתות
- בוחרים אזור (לדוגמה
כדי לקבל את הביצועים הטובים ביותר, צריך לקשר את שירות 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
ממתינים כמה רגעים עד שהפריסה תושלם. אם הפעולה הצליחה, בשורת הפקודה תוצג כתובת ה-URL של השירות. לדוגמה:
https://helloworld-RANDOM_HASH-us-central1.a.run.app כדי להיכנס למאגר התגים שנפרס, פותחים את כתובת ה-URL של השירות בדפדפן אינטרנט.
בשלב הבא נסביר איך לגשת לאפליקציה בקונטיינר הזה מכתובת URL של Firebase Hosting, כדי שהיא תוכל ליצור תוכן דינמי לאתר שלכם ב-Firebase.
שלב 4: הפניית בקשות אירוח לאפליקציה בקונטיינרים
בעזרת כללי כתיבה מחדש, אפשר להפנות בקשות שתואמות לדפוסים ספציפיים ליעד יחיד.
בדוגמה הבאה מוסבר איך להפנות את כל הבקשות מהדף /helloworld
באתר Hosting כדי להפעיל את המכונה של הקונטיינר helloworld
ולהריץ אותה.
חשוב לוודא ש:
מותקנת אצלכם הגרסה האחרונה של CLI של Firebase.
ביצעתם את האיפוס של 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
עכשיו אפשר לגשת לקונטיינר דרך כתובות ה-URL הבאות:
תת-הדומיינים של Firebase:
PROJECT_ID.web.app/
ו-PROJECT_ID.firebaseapp.com/
כל הדומיינים המותאמים אישית שמחוברים:
CUSTOM_DOMAIN/
בדף ההגדרות של Hosting תוכלו לקרוא פרטים נוספים על כללי הכתיבה מחדש. תוכלו גם לקרוא על סדר העדיפויות של התשובות בהגדרות שונות של Hosting.
בדיקה מקומית
במהלך הפיתוח, תוכלו להריץ ולבדוק את קובץ האימג' של הקונטיינר באופן מקומי. הוראות מפורטות זמינות במסמכי העזרה של Cloud Run.
השלבים הבאים
הגדרת שמירת תוכן דינמי במטמון ב-CDN גלובלי.
יצירת אינטראקציה עם שירותים אחרים של Firebase באמצעות Firebase Admin SDK.
מידע נוסף על Cloud Run, כולל מדריכים מפורטים להגדרה, לניהול ולקביעת הגדרות של קונטיינרים.
קוראים את התמחור ואת המכסות והמגבלות של Cloud Run.