חבר את ה-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
- הכנס אפליקציה למיכל והעלה אותה ל-Container Registry
- פרוס את תמונת המכולה ב-Cloud Run
- ישיר בקשות אירוח לאפליקציה המכולה שלך
שים לב שכדי לשפר את הביצועים של הגשת תוכן דינמי, אתה יכול לכוון את הגדרות המטמון שלך.
לפני שאתה מתחיל
לפני השימוש ב-Cloud Run, עליך להשלים כמה משימות ראשוניות, כולל הגדרת חשבון Cloud Billing, הפעלת ממשק ה-API של Cloud Run והתקנת כלי שורת הפקודה gcloud
.
הגדר חיוב עבור הפרויקט שלך
Cloud Run מציע מכסת שימוש בחינם , אך עדיין חייב להיות לך חשבון Cloud Billing המשויך לפרויקט Firebase שלך כדי להשתמש או לנסות את Cloud Run.
הפעל את ה-API והתקן את ה-SDK
הפעל את Cloud Run API במסוף Google APIs:
פתח את דף Cloud Run API במסוף Google APIs.
כשתתבקש, בחר בפרויקט Firebase שלך.
לחץ על הפעל בדף Cloud Run API.
התקן ואתחל את Cloud SDK.
בדוק שכלי
gcloud
מוגדר לפרויקט הנכון:gcloud config list
שלב 1 : כתוב את היישום לדוגמה
שימו לב ש-Cloud Run תומך בשפות רבות אחרות בנוסף לשפות המוצגות בדוגמה הבאה.
ללכת
צור ספרייה חדשה בשם
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.
פִּיתוֹן
צור ספרייה חדשה בשם
helloworld-python
, ולאחר מכן שנה את הספרייה לתוכה:mkdir helloworld-python
cd helloworld-python
צור קובץ חדש בשם
app.py
, ולאחר מכן הוסף את הקוד הבא:קוד זה יוצר שרת אינטרנט בסיסי שמאזין ליציאה המוגדרת על ידי משתנה הסביבה
PORT
.
האפליקציה שלך גמורה ומוכנה לאחסון במכולות ולהעלאה ל-Container Registry.
Java
התקן את 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.zip
unzip helloworld.zip
זה יוצר פרויקט SpringBoot.
עדכן את המחלקה
SpringBootApplication
ב-src/main/java/com/example/helloworld/HelloworldApplication.java
על ידי הוספת@RestController
לטיפול במיפוי/
וכן הוסף שדה@Value
כדי לספק את משתנה הסביבהTARGET
:קוד זה יוצר שרת אינטרנט בסיסי שמאזין ליציאה המוגדרת על ידי משתנה הסביבה
PORT
.
האפליקציה שלך גמורה ומוכנה לאחסון במכולות ולהעלאה ל-Container Registry.
שלב 2 : הכנס אפליקציה למיכל והעלה אותה ל-Container Registry
הכנס את האפליקציה לדוגמה על ידי יצירת קובץ חדש בשם
Dockerfile
באותה ספרייה כמו קבצי המקור. העתק את התוכן הבא לקובץ שלך.ללכת
Node.js
פִּיתוֹן
Java
בנה את תמונת המכולה שלך באמצעות Cloud Build על ידי הפעלת הפקודה הבאה מהספרייה המכילה את Dockerfile שלך:
gcloud builds submit --tag gcr.io/PROJECT_ID/helloworld
לאחר ההצלחה, תראה הודעת SUCCESS המכילה את שם התמונה
(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 שלך יחד עם אירוח באמצעות האזורים הבאים:
-
us-west1
-
us-central1
-
us-east1
-
europe-west1
-
asia-east1
שכתובים ל-Cloud Run מארח נתמכים באזורים הבאים:
-
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
המתן מספר רגעים עד שהפריסה תושלם. לאחר הצלחה, שורת הפקודה מציגה את כתובת האתר של השירות. לדוגמה:
https://helloworld- RANDOM_HASH -us-central1.a.run.appבקר בקונטיינר שנפרס על ידי פתיחת כתובת האתר של השירות בדפדפן אינטרנט.
השלב הבא ידריך אותך כיצד לגשת לאפליקציה המכולה הזו מכתובת אתר לאירוח של Firebase , כך שתוכל ליצור תוכן דינמי עבור האתר שלך שמתארח ב-Firebase.
שלב 4: הפנה בקשות אירוח לאפליקציה המכולה שלך
עם כללי כתיבה מחדש , אתה יכול להפנות בקשות התואמות דפוסים ספציפיים ליעד יחיד.
הדוגמה הבאה מראה כיצד להפנות את כל הבקשות מהדף /helloworld
באתר האחסון שלך כדי להפעיל את ההפעלה וההפעלה של מופע המכולה helloworld
שלך.
תוודא ש:
יש לך את הגרסה העדכנית ביותר של Firebase CLI .
אתחולת את Firebase Hosting.
להנחיות מפורטות לגבי התקנת ה-CLI ואתחול האחסון, עיין במדריך התחל לאירוח .
פתח את קובץ
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 שלך להפקת התוכן הדינמי של האתר שלך יישמר מסונכרן עם משאבי האירוח הסטטיים ותצורת האירוח שלך. כמו כן, תכונה זו מאפשרת לך לצפות בתצוגה מקדימה של השכתובים שלך ל-Cloud Run בערוצי תצוגה מקדימה של אירוח.
אם תוסיף
"pingTag": true
לבלוקrun
של התצורה שלhosting.rewrites
, משאבי האחסון הסטטיים והתצורה שלך יוצמדו לגרסה האחרונה של שירות Cloud Run, בזמן הפריסה. אם תחזיר גרסה של האתר שלך לאחור, הגרסה של שירות ה-Cloud Run ה"מוצמד" מבוטלת גם היא.תכונה זו מסתמכת על תגי Cloud Run , שיש להם מגבלה של 1000 תגים לשירות ו-2000 תגים לכל אזור. המשמעות היא שאחרי מאות פריסות, הגרסאות הישנות ביותר של אתר עשויות להפסיק לעבוד.
כעת ניתן להגיע למאגר שלך באמצעות כתובות האתרים הבאות:
תת-הדומיינים שלך ב-Firebase:
PROJECT_ID .web.app/
ו-PROJECT_ID .firebaseapp.com/
כל דומיינים מותאמים אישית מחוברים:
CUSTOM_DOMAIN /
בקר בדף תצורת אירוח לפרטים נוספים על כללי כתיבה מחדש . אתה יכול גם ללמוד על סדר העדיפות של התגובות עבור תצורות אירוח שונות.
בדיקה מקומית
במהלך הפיתוח, אתה יכול להפעיל ולבדוק את תמונת המכולה שלך באופן מקומי. להנחיות מפורטות, בקר בתיעוד של Cloud Run .
הצעדים הבאים
הגדר שמירה במטמון של התוכן הדינמי שלך ב-CDN גלובלי.
צור אינטראקציה עם שירותי Firebase אחרים באמצעות Firebase Admin SDK .
למידע נוסף על Cloud Run, כולל מדריכי הדרכה מפורטים להגדרה, ניהול וקביעת קונטיינרים.
סקור את התמחור ואת המכסות והמגבלות עבור Cloud Run.