قم بإقران 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 بسيطًا
- قم بتضمين تطبيق وتحميله إلى Container Registry
- انشر صورة الحاوية في 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
للتعامل مع/
mapping وإضافة حقل@Value
لتوفير متغير البيئةTARGET
:ينشئ هذا الرمز خادم ويب أساسيًا يستمع إلى المنفذ المحدد بواسطة متغير بيئة
PORT
.
تم الانتهاء من تطبيقك وجاهز ليتم وضعه في حاويات وتحميله إلى Container Registry.
الخطوة 2 : قم بتعبئة أحد التطبيقات وتحميله إلى Container Registry
قم بتضمين نموذج التطبيق عن طريق إنشاء ملف جديد يسمى
Dockerfile
في نفس الدليل مثل الملفات المصدر. انسخ المحتوى التالي إلى ملفك.يذهب
Node.js
بايثون
جافا
أنشئ صورة الحاوية الخاصة بك باستخدام Cloud Build عن طريق تشغيل الأمر التالي من الدليل الذي يحتوي على Dockerfile الخاص بك:
gcloud builds submit --tag gcr.io/PROJECT_ID/helloworld
عند النجاح ، سترى رسالة نجاح تحتوي على اسم الصورة
(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
للسماح بالاستدعاءات غير المصدق عليها
- حدد منطقة (على سبيل المثال
انتظر بضع لحظات حتى يكتمل النشر. عند النجاح ، يعرض سطر الأوامر عنوان 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 ، بما في ذلك أدلة إرشادية مفصلة لإعداد الحاويات وإدارتها وتكوينها.
راجع الأسعار والحصص وحدود التشغيل السحابي.