يمكنك إقران "Cloud Run" مع "Firebase Hosting" لإنشاء وعرض للمحتوى الديناميكي أو إنشاء واجهات برمجة تطبيقات REST كخدمات مصغّرة.
باستخدام Cloud Run، يمكنك نشر تطبيق حزمة في صورة حاوية. بعد ذلك، باستخدام Firebase Hosting، يمكنك توجيه طلبات HTTPS لتشغيل الحاوية.
- يتيح Cloud Run استخدام عدة لغات (بما في ذلك Go وNode.js وPython وJava)، ما يمنحك المرونة في استخدام لغة البرمجة وإطار العمل المفضّلَين لديك.
- Cloud Run يتدرج تلقائيًا وأفقيًا صورة الحاوية لمعالجة الطلبات التي تم استلامها، ثم يتم تقليل حجمها عندما انخفاض الطلب.
- لن تدفع إلا مقابل استخدام وحدة المعالجة المركزية (CPU)، والذاكرة والشبكات أثناء معالجة الطلب.
للاطّلاع على أمثلة لحالات الاستخدام ونماذج لتطبيق Cloud Run المدمج مع Firebase Hosting، يُرجى الانتقال إلى مقالة نظرة عامة حول تكنولوجيا السحابة غير المزوّدة بخادم.
يوضّح لك هذا الدليل كيفية تنفيذ ما يلي:
- كتابة تطبيق Hello World بسيط
- تضمين تطبيق في حاوية وتحميله إلى Container 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.
تحقَّق من ضبط أداة
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
Python
أنشئ دليلاً جديدًا باسم
helloworld-python
، ثم غيِّر الدليل إلى:mkdir helloworld-python
cd helloworld-python
أنشئ ملفًا جديدًا باسم
app.py
، ثم أضِف الرمز التالي:تنشئ هذه التعليمات البرمجية خادم ويب أساسيًا يستمع إلى المنفذ المحدَّد من خلال متغيّر البيئة
PORT
.
اكتمل تطبيقك وأصبح جاهزًا لنقله إلى حاويات وتحميله إليه. Container Registry
جافا
تثبيت Java SE 8 أو إصدار JDK الأحدث وCURL.
لاحظ أننا نحتاج فقط إلى القيام بذلك لإنشاء مشروع الويب الجديد في الخطوة التالية. ويحمّل الملف الشامل، الذي يرد وصفه لاحقًا، جميع والتبعيات في الحاوية.
من وحدة التحكّم، أنشِئ مشروع ويب جديدًا فارغًا باستخدام مفتاح 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
Python
جافا
أنشئ صورة الحاوية باستخدام 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 من خلال Hosting باستخدام المناطق التالية:
us-west1
us-central1
us-east1
europe-west1
asia-east1
تتوفر إعادة الكتابة إلى Cloud Run من Hosting في المناطق التالية:
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 للخدمة في متصفّح ويب.
ترشدك الخطوة التالية إلى كيفية الوصول إلى هذا التطبيق المحوَّل من Firebase Hosting عنوان URL لكي تتمكّن من إنشاء محتوى ديناميكي موقعًا إلكترونيًا مستضافًا على Firebase.
الخطوة 4: إرسال طلبات الاستضافة المباشرة إلى تطبيقك المحوَّل
باستخدام قواعد إعادة الكتابة، يمكنك توجيه الطلبات التي تتطابق مع أنماط معيّنة إلى وجهة واحدة.
يوضّح المثال التالي كيفية توجيه جميع الطلبات من الصفحة
/helloworld
على موقعك الإلكتروني Hosting لبدء تشغيل
مثيل حاوية helloworld
وتشغيله.
تأكَّد مما يلي:
لقد تم إعداد 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