אפשר להתאים בין Cloud Run ל-Firebase Hosting כדי ליצור תוכן דינמי ולהציג אותו, או כדי ליצור ממשקי API ל-REST כמיקרו-שירותים.
באמצעות Cloud Run אפשר לפרוס אפליקציה שארוזה בקובץ אימג' בקונטיינר. לאחר מכן, תוכלו להשתמש ב-Firebase Hosting כדי להפנות בקשות HTTPS להפעלת האפליקציה בקונטיינר.
- Cloud Run תומך במספר שפות (כולל Go, Node.js, Python ו-Java), כך שתוכלו להשתמש בשפת התכנות ובמסגרת התכנות שבחרתם.
- Cloud Run מתאים את קובץ האימג' בקונטיינר באופן אוטומטי ואופקי כדי לטפל בבקשות שהתקבלו, ולאחר מכן מבצע התאמה לאחור כשהביקוש יורד.
- אתם משלמים רק על השימוש במעבד, בזיכרון וברשתות במהלך הטיפול בבקשות.
תרחישים לדוגמה ודוגמאות ל-Cloud Run בשילוב עם Firebase Hosting זמינים בסקירה הכללית בנושא שירותים ללא שרת.
במדריך הזה נסביר איך:
- כתיבת אפליקציה פשוטה מסוג Hello World
- ארגון אפליקציה בקונטיינר והעלאה שלה אל Artifact 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
.
האפליקציה מוכנה להעלאה ל-Artifact Registry בקונטיינר.
Node.js
יוצרים ספרייה חדשה בשם
helloworld-nodejs
, ואז עוברים אליה:mkdir helloworld-nodejs
cd helloworld-nodejs
יוצרים קובץ
package.json
עם התוכן הבא:יוצרים קובץ חדש בשם
index.js
ומוסיפים את הקוד הבא:הקוד הזה יוצר שרת אינטרנט בסיסי שמקשיב ביציאה שמוגדרת על ידי משתנה הסביבה
PORT
.
האפליקציה מוכנה להעלאה ל-Artifact Registry בקונטיינר.
Python
יוצרים ספרייה חדשה בשם
helloworld-python
, ואז עוברים אליה:mkdir helloworld-python
cd helloworld-python
יוצרים קובץ חדש בשם
app.py
ומוסיפים את הקוד הבא:הקוד הזה יוצר שרת אינטרנט בסיסי שמקשיב ביציאה שמוגדרת על ידי משתנה הסביבה
PORT
.
האפליקציה מוכנה להעלאה ל-Artifact Registry בקונטיינר.
Java
מתקינים את JDK של Java SE מגרסה 8 ואילך ואת CURL.
שימו לב שאנחנו צריכים לעשות זאת רק כדי ליצור את פרויקט האינטרנט החדש בשלב הבא. קובץ ה-Dockerfile, שמתואר בהמשך, יטמיע את כל יחסי התלות בקונטיינר.
במסוף, יוצרים פרויקט אינטרנט ריק חדש באמצעות הפקודות cURL ואז unzip:
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
.
האפליקציה מוכנה להעלאה ל-Artifact Registry בקונטיינר.
שלב 2: הכנסת אפליקציה לקונטיינר והעלאה שלה אל Artifact Registry
כדי לארוז את האפליקציה לדוגמה בקונטיינר, יוצרים קובץ חדש בשם
Dockerfile
באותה ספרייה שבה נמצאים קובצי המקור. מעתיקים את התוכן הבא לקובץ.Go
Node.js
Python
Java
כדי ליצור את קובץ האימג' בקונטיינר באמצעות Cloud Build, מריצים את הפקודה הבאה מהספרייה שמכילה את קובץ Dockerfile:
gcloud builds submit --tag gcr.io/PROJECT_ID/helloworld
אם הפעולה תתבצע בהצלחה, תוצג הודעה על הצלחה עם שם התמונה
(gcr.io/PROJECT_ID/helloworld
).
קובץ האימג' של הקונטיינר מאוחסן עכשיו ב-Artifact Registry, וניתן לעשות בו שימוש חוזר אם רוצים.
הערה: במקום Cloud Build, אפשר להשתמש בגרסה מקומית של Docker כדי ליצור את הקונטיינר באופן מקומי.
שלב 3: פורסים את קובץ האימג' בקונטיינר ב-Cloud Run
פורסים באמצעות הפקודה הבאה:
gcloud run deploy --image gcr.io/PROJECT_ID/helloworld
כשמופיעה בקשה:
- בוחרים אזור (לדוגמה
us-central1
) - מאשרים את שם השירות (לדוגמה,
helloworld
) - משיבים
Y
כדי לאפשר הפעלות לא מאומתות
- בוחרים אזור (לדוגמה
ממתינים כמה רגעים עד שהפריסה תושלם. אם הפעולה מסתיימת בהצלחה, כתובת ה-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