قم بإقران Cloud Run مع Firebase Hosting لإنشاء المحتوى الديناميكي الخاص بك وتقديمه أو إنشاء واجهات برمجة تطبيقات REST كخدمات صغيرة.
باستخدام Cloud Run ، يمكنك نشر تطبيق مضمن في صورة حاوية. وبعد ذلك، باستخدام استضافة Firebase، يمكنك توجيه طلبات HTTPS لتشغيل تطبيقك الموجود في حاوية.
- يدعم Cloud Run العديد من اللغات (بما في ذلك Go وNode.js وPython وJava)، مما يتيح لك المرونة في استخدام لغة البرمجة وإطار العمل الذي تختاره.
- يقوم Cloud Run تلقائيًا وأفقيًا بتحجيم صورة الحاوية الخاصة بك للتعامل مع الطلبات المستلمة، ثم يتم تصغير الحجم عندما ينخفض الطلب.
- أنت تدفع فقط مقابل وحدة المعالجة المركزية والذاكرة والشبكات المستهلكة أثناء معالجة الطلب.
على سبيل المثال، استخدم حالات ونماذج Cloud Run المدمجة مع Firebase Hosting، تفضل بزيارة النظرة العامة بدون خادم .
يوضح لك هذا الدليل كيفية:
- اكتب تطبيق Hello World بسيطًا
- قم بوضع التطبيق في حاوية وتحميله إلى سجل الحاوية
- انشر صورة الحاوية على Cloud Run
- طلبات الاستضافة المباشرة إلى تطبيقك الموجود في حاوية
لاحظ أنه لتحسين أداء تقديم المحتوى الديناميكي، يمكنك اختياريًا ضبط إعدادات ذاكرة التخزين المؤقت .
قبل ان تبدأ
قبل استخدام Cloud Run، تحتاج إلى إكمال بعض المهام الأولية، بما في ذلك إعداد حساب Cloud Billing، وتمكين Cloud Run API، وتثبيت أداة سطر أوامر 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 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 : قم بوضع التطبيق في حاوية وتحميله إلى سجل الحاوية
قم بوضع نموذج التطبيق في حاوية عن طريق إنشاء ملف جديد باسم
Dockerfile
في نفس الدليل مثل الملفات المصدر. انسخ المحتوى التالي إلى ملفك.يذهب
Node.js
بايثون
جافا
أنشئ صورة الحاوية الخاصة بك باستخدام Cloud Build عن طريق تشغيل الأمر التالي من الدليل الذي يحتوي على ملف Dockerfile الخاص بك:
gcloud builds submit --tag gcr.io/PROJECT_ID/helloworld
عند النجاح ستظهر لك رسالة نجاح تحتوي على اسم الصورة
(gcr.io/ PROJECT_ID /helloworld
).
يتم الآن تخزين صورة الحاوية في سجل الحاوية ويمكن إعادة استخدامها إذا رغبت في ذلك.
لاحظ أنه بدلاً من 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
انتظر بضع دقائق حتى يكتمل النشر. عند النجاح، يعرض سطر الأوامر عنوان URL للخدمة. على سبيل المثال:
https://helloworld- RANDOM_HASH -us-central1.a.run.appقم بزيارة الحاوية المنشورة الخاصة بك عن طريق فتح عنوان URL للخدمة في متصفح الويب.
ترشدك الخطوة التالية إلى كيفية الوصول إلى هذا التطبيق المحتوي على حاوية من عنوان URL لاستضافة Firebase حتى يتمكن من إنشاء محتوى ديناميكي لموقعك المستضاف على Firebase.
الخطوة 4: توجيه طلبات الاستضافة إلى تطبيقك الموجود في حاوية
باستخدام قواعد إعادة الكتابة ، يمكنك توجيه الطلبات التي تطابق أنماطًا معينة إلى وجهة واحدة.
يوضح المثال التالي كيفية توجيه جميع الطلبات من الصفحة /helloworld
على موقع الاستضافة الخاص بك لبدء تشغيل مثيل حاوية helloworld
وتشغيله.
تأكد من أن:
لديك أحدث إصدار من Firebase CLI .
لقد قمت بتهيئة استضافة Firebase.
للحصول على إرشادات مفصلة حول تثبيت واجهة سطر الأوامر (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 علامة لكل منطقة. وهذا يعني أنه بعد مئات عمليات النشر، قد تتوقف الإصدارات الأقدم من الموقع عن العمل.
يمكن الآن الوصول إلى حاويتك عبر عناوين URL التالية:
نطاقات Firebase الفرعية الخاصة بك:
PROJECT_ID .web.app/
وPROJECT_ID .firebaseapp.com/
أي مجالات مخصصة متصلة:
CUSTOM_DOMAIN /
قم بزيارة صفحة تكوين الاستضافة لمزيد من التفاصيل حول قواعد إعادة الكتابة . يمكنك أيضًا التعرف على ترتيب أولويات الاستجابات لتكوينات الاستضافة المختلفة.
اختبار محليا
أثناء التطوير، يمكنك تشغيل واختبار صورة الحاوية الخاصة بك محليًا. للحصول على تعليمات مفصلة، قم بزيارة وثائق Cloud Run .
الخطوات التالية
قم بإعداد التخزين المؤقت للمحتوى الديناميكي الخاص بك على شبكة CDN عالمية.
تفاعل مع خدمات Firebase الأخرى باستخدام Firebase Admin SDK .
تعرف على المزيد حول Cloud Run، بما في ذلك أدلة إرشادية تفصيلية لإعداد الحاويات وإدارتها وتكوينها.
قم بمراجعة الأسعار والحصص والحدود الخاصة بـ Cloud Run.