אפשר לשלב בין Cloud Run לבין Firebase Hosting כדי ליצור ולהציג את התוכן הדינמי שלכם או כדי ליצור ממשקי API ל-REST בתור מיקרו-שירותים.
באמצעות Cloud Run, אפשר לפרוס אפליקציה שארוזה בקובץ אימג' של קונטיינר. לאחר מכן, באמצעות Firebase Hosting, אפשר להפנות בקשות HTTPS להפעלת האפליקציה שמוכלת בקונטיינר.
- Cloud Run תומך בכמה שפות (כולל Go, Node.js, Python ו-Java), כך שאתם יכולים להשתמש בשפת התכנות ובמסגרת התכנות שתבחרו.
- Cloud Run מתבצעת התאמה אוטומטית לעומס (auto-scaling) והרחבה אופקית של תמונת הקונטיינר כדי לטפל בבקשות שהתקבלו, ואז מצמצמים את ההרחבה כשהדרישה יורדת.
- משלמים רק על השימוש במעבד, בזיכרון ובחיבור לרשת במהלך הטיפול בבקשות.
תרחישי שימוש לדוגמה ודוגמאות ל-Cloud Run שמשולב עם Firebase Hosting זמינים בסקירה הכללית בנושא שרתים וירטואליים.
במדריך הזה נסביר איך:
- כתיבת אפליקציית Hello World פשוטה
- העברת אפליקציה לקונטיינר והעלאה שלה אל Artifact Registry
- פריסת קובץ האימג' של הקונטיינר אל Cloud Run
- הפניית בקשות ישירות לאפליקציה שמופעלת בתוך קונטיינרHosting
שימו לב: כדי לשפר את הביצועים של הצגת תוכן דינמי, אפשר לשנות את הגדרות המטמון.
לפני שמתחילים
לפני שמשתמשים ב-Cloud Run, צריך להשלים כמה משימות ראשוניות, כולל הגדרת חשבון Cloud Billing, הפעלת Cloud Run API והתקנת כלי שורת הפקודה gcloud
.
הגדרת חיוב לפרויקט
ב-Cloud Run יש מכסת שימוש ללא תשלום, אבל עדיין צריך חשבון Cloud Billing שמשויך לפרויקט Firebase כדי להשתמש ב-Cloud Run או לנסות אותו.
הפעלת ה-API והתקנת ה-SDK
מפעילים את Cloud Run API ב-Google APIs Console:
פותחים את הדף Cloud Run API ב-Google APIs Console.
כשמתבקשים, בוחרים את הפרויקט ב-Firebase.
לוחצים על הפעלה בדף של Cloud Run API.
מתקינים ומפעילים את 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
מתקינים 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.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
על allow unauthenticated invocations (אישור הפעלות לא מאומתות)
- בוחרים אזור (לדוגמה,
מחכים כמה רגעים עד שהפריסה תושלם. אם הפעולה בוצעה ללא שגיאות, כתובת ה-URL של השירות תוצג בשורת הפקודה. לדוגמה:
https://helloworld-RANDOM_HASH-us-central1.a.run.app פותחים את כתובת ה-URL של השירות בדפדפן אינטרנט כדי להיכנס למאגר שהופעל.
בשלב הבא מוסבר איך לגשת לאפליקציה הזו שמבוססת על קונטיינר מכתובת URL מסוג Firebase Hosting כדי שהיא תוכל ליצור תוכן דינמי לאתר שלכם שמארח ב-Firebase.
שלב 4: הפניית בקשות אירוח לאפליקציה בקונטיינר
בעזרת כללי שכתוב, אפשר להפנות בקשות שתואמות לדפוסים ספציפיים ליעד יחיד.
בדוגמה הבאה אנחנו מראים איך להפנות את כל הבקשות מהדף /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
עכשיו אפשר לגשת למאגר התגים שלך דרך כתובות ה-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.