Skip to content

Google Cloud Run هي منصة مُدارة لنشر التطبيقات بدون خادم وتوسيع نطاقها. تتولى Google إدارة البنية التحتية نيابة عنك.

في هذا الدليل، سنقوم بنشر خادم HTTP Bun إلى Google Cloud Run باستخدام Dockerfile.

NOTE

قبل المتابعة، تأكد من أن لديك:

تهيئة gcloud عن طريق تحديد/إنشاء مشروع

تأكد من أنك قد قمت بتهيئة Google Cloud CLI. يقوم هذا الأمر بتسجيل دخولك ويطلب منك إما تحديد مشروع موجود أو إنشاء مشروع جديد.

لمزيد من المساعدة حول Google Cloud CLI، راجع الوثائق الرسمية.

bash
gcloud init
txt
Welcome! 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!

(اختياري) تخزين معلومات مشروعك في متغيرات البيئة

اضبط متغيرات لمعرف المشروع ورقمه حتى يسهل إعادة استخدامها في الخطوات التالية.

bash
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_NUMBER
txt
my-bun-app-... [PROJECT_NUMBER]

ربط حساب خدمة الفوترة

اعرض حسابات الفوترة المتاحة واربط أحدها بمشروعك:

bash
gcloud billing accounts list
txt
ACCOUNT_ID            NAME                OPEN  MASTER_ACCOUNT_ID
[BILLING_ACCOUNT_ID]  My Billing Account  True

اربط حساب الفوترة الخاص بك بمشروعك. استبدل [BILLING_ACCOUNT_ID] بمعرف حساب الفوترة الخاص بك.

bash
gcloud billing projects link $PROJECT_ID --billing-account=[BILLING_ACCOUNT_ID]
txt
billingAccountName: billingAccounts/[BILLING_ACCOUNT_ID]
billingEnabled: true
name: projects/my-bun-app-.../billingInfo
projectId: my-bun-app-...

تفعيل واجهات برمجة التطبيقات وتكوين أدوار IAM

قم بتفعيل الخدمات اللازمة ومنح أذونات Cloud Build:

bash
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.builder

NOTE

تقوم هذه الأوامر بتفعيل 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 جديد في الجذر الخاص بمشروعك. يحتوي هذا الملف على التعليمات لتهيئة الحاوية ونسخ ملفات المشروع المحلية وتثبيت التبعيات وتشغيل التطبيق.

docker
# استخدام صورة 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. هذا يجعل عمليات البناء أسرع وأصغر:

docker
node_modules
Dockerfile*
.dockerignore
.git
.gitignore
README.md
LICENSE
.vscode
.env
# أي ملفات أو مجلدات أخرى تريد استبعادها

نشر الخدمة

تأكد من أنك في الدليل الذي يحتوي على Dockerfile، ثم قم بالنشر مباشرة من المصدر المحلي:

NOTE

قم بتحديث العلم `--region` إلى المنطقة المفضلة لديك. يمكنك أيضًا حذف هذا العلم للحصول على مطالبة تفاعلية لتحديد منطقة.
bash
gcloud run deploy my-bun-app --source . --region=us-west1 --allow-unauthenticated
txt
Deploying 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) للتأكد من أن كل شيء يعمل كما هو متوقع.

Bun بواسطة www.bunjs.com.cn تحرير