Google Cloud Run هي منصة مُدارة لنشر التطبيقات بدون خادم وتوسيع نطاقها. تتولى Google إدارة البنية التحتية نيابة عنك.
في هذا الدليل، سنقوم بنشر خادم HTTP Bun إلى Google Cloud Run باستخدام Dockerfile.
NOTE
قبل المتابعة، تأكد من أن لديك:- تطبيق Bun جاهز للنشر
- حساب Google Cloud مع تفعيل الفوترة
- Google Cloud CLI مثبت ومُهيأ
تهيئة gcloud عن طريق تحديد/إنشاء مشروع
تأكد من أنك قد قمت بتهيئة Google Cloud CLI. يقوم هذا الأمر بتسجيل دخولك ويطلب منك إما تحديد مشروع موجود أو إنشاء مشروع جديد.
لمزيد من المساعدة حول Google Cloud CLI، راجع الوثائق الرسمية.
gcloud initWelcome! This command will take you through the configuration of gcloud.
You must sign in to continue. Would you like to sign in (Y/n)? Y
You are signed in as [email@example.com].
Pick cloud project to use:
[1] existing-bun-app-1234
[2] Enter a project ID
[3] Create a new project
Please enter numeric choice or text value (must exactly match list item): 3
Enter a Project ID. my-bun-app
Your current project has been set to: [my-bun-app]
The Google Cloud CLI is configured and ready to use!(اختياري) تخزين معلومات مشروعك في متغيرات البيئة
اضبط متغيرات لمعرف المشروع ورقمه حتى يسهل إعادة استخدامها في الخطوات التالية.
PROJECT_ID=$(gcloud projects list --format='value(projectId)' --filter='name="my bun app"')
PROJECT_NUMBER=$(gcloud projects list --format='value(projectNumber)' --filter='name="my bun app"')
echo $PROJECT_ID $PROJECT_NUMBERmy-bun-app-... [PROJECT_NUMBER]ربط حساب خدمة الفوترة
اعرض حسابات الفوترة المتاحة واربط أحدها بمشروعك:
gcloud billing accounts listACCOUNT_ID NAME OPEN MASTER_ACCOUNT_ID
[BILLING_ACCOUNT_ID] My Billing Account Trueاربط حساب الفوترة الخاص بك بمشروعك. استبدل [BILLING_ACCOUNT_ID] بمعرف حساب الفوترة الخاص بك.
gcloud billing projects link $PROJECT_ID --billing-account=[BILLING_ACCOUNT_ID]billingAccountName: billingAccounts/[BILLING_ACCOUNT_ID]
billingEnabled: true
name: projects/my-bun-app-.../billingInfo
projectId: my-bun-app-...تفعيل واجهات برمجة التطبيقات وتكوين أدوار IAM
قم بتفعيل الخدمات اللازمة ومنح أذونات Cloud Build:
gcloud services enable run.googleapis.com cloudbuild.googleapis.com
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member=serviceAccount:$PROJECT_NUMBER-compute@developer.gserviceaccount.com \
--role=roles/run.builderNOTE
تقوم هذه الأوامر بتفعيل Cloud Run (`run.googleapis.com`) و Cloud Build (`cloudbuild.googleapis.com`)، وهما مطلوبان للنشر من المصدر. يشغل Cloud Run تطبيقك المعبأ في حاوية، بينما يتولى Cloud Build عملية البناء والتعبئة.يربط IAM حساب خدمة Compute Engine ($PROJECT_NUMBER-compute@developer.gserviceaccount.com) بالسماح ببناء ونشر الصور نيابة عنك.
إضافة Dockerfile
أنشئ Dockerfile جديد في الجذر الخاص بمشروعك. يحتوي هذا الملف على التعليمات لتهيئة الحاوية ونسخ ملفات المشروع المحلية وتثبيت التبعيات وتشغيل التطبيق.
# استخدام صورة Bun الرسمية لتشغيل التطبيق
FROM oven/bun:latest
# نسخ package.json و bun.lock إلى داخل الحاوية
COPY package.json bun.lock ./
# تثبيت التبعيات
RUN bun install --production --frozen-lockfile
# نسخ بقية التطبيق إلى داخل الحاوية
COPY . .
# تشغيل التطبيق
CMD ["bun", "index.ts"]NOTE
تأكد من أن أمر البدء يتوافق مع نقطة دخول التطبيق. يمكن أن يكون هذا أيضًا `CMD ["bun", "run", "start"]` إذا كان لديك نص بدء في `package.json`.تقوم هذه الصورة بتثبيت التبعيات وتشغيل التطبيق باستخدام Bun داخل حاوية. إذا لم يكن للتطبيق تبعيات، يمكنك حذف السطر RUN bun install --production --frozen-lockfile.
أنشئ ملف .dockerignore جديد في الجذر الخاص بمشروعك. يحتوي هذا الملف على الملفات والمجلدات التي يجب استبعادها من صورة الحاوية، مثل node_modules. هذا يجعل عمليات البناء أسرع وأصغر:
node_modules
Dockerfile*
.dockerignore
.git
.gitignore
README.md
LICENSE
.vscode
.env
# أي ملفات أو مجلدات أخرى تريد استبعادهانشر الخدمة
تأكد من أنك في الدليل الذي يحتوي على Dockerfile، ثم قم بالنشر مباشرة من المصدر المحلي:
NOTE
قم بتحديث العلم `--region` إلى المنطقة المفضلة لديك. يمكنك أيضًا حذف هذا العلم للحصول على مطالبة تفاعلية لتحديد منطقة.gcloud run deploy my-bun-app --source . --region=us-west1 --allow-unauthenticatedDeploying from source requires an Artifact Registry Docker repository to store built containers. A repository named
[cloud-run-source-deploy] in region [us-west1] will be created.
Do you want to continue (Y/n)? Y
Building using Dockerfile and deploying container to Cloud Run service [my-bun-app] in project [my-bun-app-...] region [us-west1]
✓ Building and deploying... Done.
✓ Validating Service...
✓ Uploading sources...
✓ Building Container... Logs are available at [https://console.cloud.google.com/cloud-build/builds...].
✓ Creating Revision...
✓ Routing traffic...
✓ Setting IAM Policy...
Done.
Service [my-bun-app] revision [my-bun-app-...] has been deployed and is serving 100 percent of traffic.
Service URL: https://my-bun-app-....us-west1.run.appزيارة تطبيقك المباشر
🎉 تطبيق Bun الخاص بك الآن يعمل!
قم بزيارة عنوان URL للخدمة (https://my-bun-app-....us-west1.run.app) للتأكد من أن كل شيء يعمل كما هو متوقع.