يمكنك إقران Cloud Run مع Firebase Hosting لإنشاء المحتوى الديناميكي وعرضه أو إنشاء واجهات برمجة تطبيقات 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 وتفعيل واجهة برمجة تطبيقات Cloud Run
وتثبيت أداة سطر الأوامر gcloud.
إعداد الفوترة لمشروعك
يوفّر Cloud Run حصّة استخدام مجانية، ولكن يجب أن يكون لديك حساب على Cloud Billing مرتبط بمشروع Firebase لاستخدام Cloud Run أو تجربته.
تفعيل واجهة برمجة التطبيقات وتثبيت حزمة تطوير البرامج (SDK)
فعِّل واجهة برمجة تطبيقات Cloud Run في وحدة تحكّم Google APIs:
افتح صفحة واجهة برمجة تطبيقات Cloud Run في وحدة تحكّم Google APIs.
اختَر مشروع Firebase عندما يُطلب منك ذلك.
انقر على تفعيل في صفحة واجهة برمجة التطبيقات Cloud Run.
ثبِّت حزمة Cloud SDK وابدأها.
تأكَّد من ضبط أداة
gcloudللمشروع الصحيح:gcloud config list
الخطوة 1: كتابة نموذج التطبيق
يُرجى العِلم أنّ Cloud Run يتيح استخدام العديد من اللغات الأخرى بالإضافة إلى اللغات المعروضة في النموذج التالي.
متابعة
أنشئ دليلاً جديدًا باسم
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، ثم أوامر فك الضغط:
curl https://start.spring.io/starter.zip \ -d dependencies=web \ -d name=helloworld \ -d artifactId=helloworld \ -o helloworld.zipunzip helloworld.zip
يؤدي ذلك إلى إنشاء مشروع SpringBoot.
عدِّل فئة
SpringBootApplicationفيsrc/main/java/com/example/helloworld/HelloworldApplication.javaمن خلال إضافة@RestControllerلمعالجة عملية ربط/وأضِف أيضًا حقل@Valueلتوفير متغيّر بيئةTARGET:تنشئ هذه التعليمة البرمجية خادم ويب أساسيًا يستمع إلى المنفذ المحدّد بواسطة متغيّر البيئة
PORT.
اكتمل تطبيقك وأصبح جاهزًا لوضعه في حاوية وتحميله إلى Artifact Registry.
الخطوة 2: وضع تطبيق في حاوية وتحميله إلى Artifact Registry
يمكنك وضع نموذج التطبيق في حاوية من خلال إنشاء ملف جديد باسم
Dockerfileفي الدليل نفسه الذي يتضمّن الملفات المصدر. انسخ المحتوى التالي في ملفك.متابعة
Node.js
Python
Java
أنشئ صورة الحاوية باستخدام Cloud Build من خلال تشغيل الأمر التالي من الدليل الذي يحتوي على ملف Dockerfile:
gcloud builds submit --tag gcr.io/PROJECT_ID/helloworld
في حال نجاح العملية، ستظهر رسالة SUCCESS (نجاح) تحتوي على اسم الصورة
(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.
تأكَّد ممّا يلي:
أن يكون لديك أحدث إصدار من واجهة سطر أوامر Firebase
لقد بدأت Firebase Hosting.
للحصول على تعليمات تفصيلية حول تثبيت واجهة سطر الأوامر وإعداد 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 الأخرى باستخدام مدير SDK في Firebase.
يمكنك الاطّلاع على مزيد من المعلومات حول Cloud Run، بما في ذلك أدلة تفصيلية حول طريقة التنفيذ لإعداد الحاويات وإدارتها وضبطها.
راجِع الأسعار والحصص والحدود لـ Cloud Run.