يمكنك إقران 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
API وتثبيت أداة سطر الأوامر gcloud.
إعداد الفوترة لمشروعك
Cloud Run تقدّم حصة استخدام مجانية، ولكن يجب أن يكون لديك Cloud Billing حساب مرتبط بمشروع Firebase لاستخدام Cloud Run أو تجربته.
تفعيل واجهة برمجة التطبيقات وتثبيت حزمة تطوير البرامج (SDK)
فعِّل Cloud Run API في وحدة تحكّم Google APIs:
افتح صفحة Cloud Run API في وحدة تحكّم Google APIs.
عندما يُطلب منك ذلك، اختَر مشروع 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 ثم أوامر فك الضغط:
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في الدليل نفسه الذي يحتوي على الملفات المصدر. انسخ المحتوى التالي في ملفك.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 للخدمة في متصفّح ويب.
توضّح لك الخطوة التالية كيفية الوصول إلى هذا التطبيق الذي تم وضعه في حاوية من عنوان Firebase Hosting URL حتى يتمكّن من إنشاء محتوى ديناميكي لموقعك المستضاف على Firebase.
الخطوة 4: توجيه طلبات الاستضافة إلى تطبيقك الذي تم وضعه في حاوية
باستخدام قواعد إعادة الكتابة، يمكنك توجيه الطلبات التي تطابق أنماطًا معيّنة إلى وجهة واحدة.
يوضّح المثال التالي كيفية توجيه جميع الطلبات من الصفحة
/helloworld على موقعك Hosting لتشغيل مثيل الحاوية
الخاص بك helloworld وبدء تشغيله.
تأكَّد مما يلي:
لديك أحدث إصدار من CLIFirebase.
لقد قمت بتهيئة 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.