يمكنك دمج 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 تتيح العديد من اللغات الأخرى بالإضافة إلى اللغات المعروضة في المثال التالي.
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.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
عند نجاح العملية، ستظهر لك الرسالة 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 للخدمة في متصفّح ويب.
توضّح لك الخطوة التالية كيفية الوصول إلى هذا التطبيق الذي تم إنشاؤه في حاوية من خلال Firebase Hosting عنوان URL كي يتمكّن من إنشاء محتوى ديناميكي لموقعك الإلكتروني المستضاف على Firebase.
الخطوة 4: توجيه طلبات الاستضافة إلى تطبيقك المستند إلى حاوية
باستخدام قواعد إعادة الكتابة، يمكنك توجيه الطلبات التي تتطابق مع أنماط معيّنة إلى وجهة واحدة.
يوضّح المثال التالي كيفية توجيه جميع الطلبات من الصفحة
/helloworld
على موقعك الإلكتروني Hosting لتفعيل بدء تشغيل
مثيل الحاوية helloworld
.
تأكَّد مما يلي:
يجب أن يكون لديك أحدث إصدار من Firebase CLI.
لقد أضفت قيمة أولية إلى 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 المستندات.
الخطوات التالية
إعداد التخزين المؤقت للمحتوى الديناميكي على شبكة توصيل محتوى عالمية
التفاعل مع خدمات Firebase الأخرى باستخدام مدير SDK في Firebase
أدلّة تفصيلية حول كيفية إعداد الحاويات وإدارتها وضبطهاCloud Run
راجِع الأسعار والحصص والحدود في Cloud Run.