۱. مقدمه

Cloud Run یک پلتفرم محاسباتی مدیریتشده است که به شما امکان میدهد کانتینرهای بدون وضعیت (stateless) را که با استفاده از درخواستهای HTTP قابل فراخوانی هستند، اجرا کنید. این پلتفرم بر اساس پروژه متنباز Knative ساخته شده است و امکان حمل بارهای کاری شما را بین پلتفرمها فراهم میکند. Cloud Run بدون سرور است: تمام مدیریت زیرساخت را حذف میکند، بنابراین میتوانید روی آنچه که بیشترین اهمیت را دارد - ساخت برنامههای عالی - تمرکز کنید.
هدف این آموزش ایجاد یک برنامه وب ساده Gradio و استقرار آن در Cloud Run است.
آنچه یاد خواهید گرفت
- چگونه یک برنامه Gradio "Hello World" ایجاد کنیم.
- قبل از استقرار، برنامه را با اجرای برنامه Gradio آزمایش کنید.
- بستههای ساخت ابری و اینکه چگونه وجود
gradioدرrequirements.txtباعث میشود نیازی به داکرفایل نباشد. - نحوه استقرار یک برنامه Gradio در Cloud Run.
۲. تنظیمات و الزامات
تنظیم محیط خودتنظیم
- وارد کنسول گوگل کلود شوید و یک پروژه جدید ایجاد کنید یا از یک پروژه موجود دوباره استفاده کنید. اگر از قبل حساب جیمیل یا گوگل ورک اسپیس ندارید، باید یکی ایجاد کنید .



- نام پروژه، نام نمایشی برای شرکتکنندگان این پروژه است. این یک رشته کاراکتری است که توسط APIهای گوگل استفاده نمیشود. شما همیشه میتوانید آن را بهروزرسانی کنید.
- شناسه پروژه در تمام پروژههای گوگل کلود منحصر به فرد است و تغییرناپذیر است (پس از تنظیم، قابل تغییر نیست). کنسول کلود به طور خودکار یک رشته منحصر به فرد تولید میکند؛ معمولاً برای شما مهم نیست که چه باشد. در اکثر آزمایشگاههای کد، باید شناسه پروژه خود را (که معمولاً با عنوان
PROJECT_IDشناخته میشود) ارجاع دهید. اگر شناسه تولید شده را دوست ندارید، میتوانید یک شناسه تصادفی دیگر ایجاد کنید. به عنوان یک جایگزین، میتوانید شناسه خودتان را امتحان کنید و ببینید که آیا در دسترس است یا خیر. پس از این مرحله قابل تغییر نیست و در طول پروژه باقی میماند. - برای اطلاع شما، یک مقدار سوم، شماره پروژه ، وجود دارد که برخی از APIها از آن استفاده میکنند. برای کسب اطلاعات بیشتر در مورد هر سه این مقادیر، به مستندات مراجعه کنید.
- در مرحله بعد، برای استفاده از منابع/API های ابری، باید پرداخت صورتحساب را در کنسول ابری فعال کنید . اجرای این آزمایشگاه کد هزینه زیادی نخواهد داشت، اگر اصلاً هزینهای داشته باشد. برای خاموش کردن منابع به منظور جلوگیری از پرداخت صورتحساب پس از این آموزش، میتوانید منابعی را که ایجاد کردهاید یا پروژه را حذف کنید. کاربران جدید Google Cloud واجد شرایط برنامه آزمایشی رایگان ۳۰۰ دلاری هستند.
شروع پوسته ابری
اگرچه میتوان از راه دور و از طریق لپتاپ، گوگل کلود را مدیریت کرد، اما در این آموزش از Cloud Shell ، یک محیط خط فرمان که در فضای ابری اجرا میشود، استفاده خواهید کرد.
فعال کردن پوسته ابری
- از کنسول ابری، روی فعال کردن پوسته ابری کلیک کنید

اگر این اولین باری است که Cloud Shell را اجرا میکنید، یک صفحه میانی برای توضیح آن به شما نمایش داده میشود. اگر با یک صفحه میانی مواجه شدید، روی ادامه کلیک کنید.

آمادهسازی و اتصال به Cloud Shell فقط چند لحظه طول میکشد.

این ماشین مجازی مجهز به تمام ابزارهای توسعه مورد نیاز است. این ماشین یک دایرکتوری خانگی پایدار ۵ گیگابایتی ارائه میدهد و در فضای ابری گوگل اجرا میشود که عملکرد شبکه و احراز هویت را تا حد زیادی افزایش میدهد. بخش عمدهای از کار شما در این آزمایشگاه کد، اگر نگوییم همه، را میتوان با یک مرورگر انجام داد.
پس از اتصال به Cloud Shell، باید ببینید که احراز هویت شدهاید و پروژه روی شناسه پروژه شما تنظیم شده است.
- برای تأیید احراز هویت، دستور زیر را در Cloud Shell اجرا کنید:
gcloud auth list
خروجی دستور
Credentialed Accounts
ACTIVE ACCOUNT
* <my_account>@<my_domain.com>
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- دستور زیر را در Cloud Shell اجرا کنید تا تأیید کنید که دستور gcloud از پروژه شما اطلاع دارد:
gcloud config list project
خروجی دستور
[core] project = <PROJECT_ID>
اگر اینطور نیست، میتوانید با این دستور آن را تنظیم کنید:
gcloud config set project <PROJECT_ID>
خروجی دستور
Updated property [core/project].
۳. فعال کردن APIها
از Cloud Shell، APIهای Artifact Registry، Cloud Build و Cloud Run را فعال کنید:
gcloud services enable \
artifactregistry.googleapis.com \
cloudbuild.googleapis.com \
run.googleapis.com
این یک پیام موفقیتآمیز مشابه این را نمایش میدهد:
Operation "operations/..." finished successfully.
حالا، شما آمادهاید تا شروع به کار کنید و درخواست خود را بنویسید...
۴. درخواست را بنویسید
در این مرحله، یک برنامه ساده Gradio Python خواهید ساخت که به درخواستهای HTTP پاسخ میدهد.
دایرکتوری کاری
از Cloud Shell برای ایجاد یک دایرکتوری کاری به نام helloworld-gradio استفاده کنید و به آن بروید:
mkdir ~/helloworld-gradio && cd ~/helloworld-gradio
برنامه.py
یک فایل با نام app.py ایجاد کنید:
touch app.py
فایل را با ویرایشگر خط فرمان دلخواه خود (nano، vim یا emacs) یا با کلیک روی دکمه Cloud Shell Editor ویرایش کنید:

برای ویرایش مستقیم فایل با ویرایشگر Cloud Shell، از این دستور استفاده کنید:
cloudshell edit app.py
app.py
import gradio as gr
def hello(name, intensity):
"""Return a friendly greeting."""
return "Hello " + name + "!" * int(intensity)
demo = gr.Interface(
fn=hello,
inputs=["text", "slider"],
outputs=["text"],
title="Hello World 👋🌎",
description=("Type your name below and hit 'Submit', and try the slider to "
"make the greeting louder!"),
theme="soft",
flagging_mode="never",
)
demo.launch(server_port=8080)
این کد یک سرویس وب ساده ایجاد میکند که به درخواستهای HTTP GET با یک پیام دوستانه پاسخ میدهد.
الزامات.txt
برای تعریف وابستگیها، فایلی با نام requirements.txt اضافه کنید:
touch requirements.txt
برای ویرایش مستقیم فایل با ویرایشگر Cloud Shell، از این دستور استفاده کنید:
cloudshell edit requirements.txt
requirements.txt
# https://pypi.org/project/gradio
gradio==5.39.0
برنامه Gradio آماده استقرار است، اما ابتدا باید آن را آزمایش کنیم...
۵. برنامه را آزمایش کنید
برای آزمایش برنامه، از uv (بستهی بسیار سریع پایتون و مدیر پروژه) که به صورت پیشفرض در Cloud Shell نصب شده است، استفاده کنید.
برای آزمایش برنامه، یک محیط مجازی ایجاد کنید:
uv venv
وابستگیها را نصب کنید:
uv pip install -r requirements.txt
برنامه را در حالت توسعه با استفاده از Gradio CLI و با uv run gradio app.py آغاز کنید:
uv run gradio app.py
به طور پیشفرض، این قابلیت بارگذاری مجدد سریع (hot reloading) را فعال میکند تا هر زمان که تغییرات را در کد خود ذخیره میکنید، رابط کاربری را در مرورگر شما به طور خودکار رفرش کند.
گزارشها نشان میدهند که برنامه Gradio در حال اجرا است:
Watching: '/home/user/helloworld-gradio' * Running on local URL: http://127.0.0.1:8080 * To create a public link, set `share=True` in `launch()`.
در پنجره Cloud Shell، روی آیکون Web Preview کلیک کنید و Preview on port 8080 انتخاب کنید:

این باید یک پنجره مرورگر باز کند که عنوان Hello World 👋🌎 را نشان میدهد.

نام خود را در قسمت متن سمت چپ وارد کنید و روی دکمه ارسال کلیک کنید!
با تنظیم اسلایدر و کلیک بر روی دکمه ارسال، کمی بازی کنید تا صدای خوشامدگویی بلندتری را ببینید.
وقتی کارتان تمام شد، به جلسه اصلی Cloud Shell برگردید و برنامه Gradio را با CTRL+C متوقف کنید.
برنامه طبق انتظار کار میکند: زمان استقرار آن فرا رسیده است...
۶. استقرار در Cloud Run
Cloud Run منطقهای است، به این معنی که زیرساختی که سرویسهای Cloud Run شما را اجرا میکند در یک منطقه خاص قرار دارد و توسط گوگل مدیریت میشود تا به طور مداوم در تمام مناطق آن منطقه در دسترس باشد. منطقهای را که برای استقرار خود استفاده خواهید کرد، تعریف کنید، به عنوان مثال:
REGION=europe-west1
مطمئن شوید که هنوز در دایرکتوری کاری هستید:
ls
این باید فایلهای زیر را فهرست کند:
app.py requirements.txt
قبل از استقرار، یک فایل .gcloudignore با .venv/ در آن ایجاد کنید. این کار مانع از آن میشود که استقرار Cloud Run شامل محیط مجازی ایجاد شده از uv در طول آزمایش محلی باشد.
با دستور زیر فایل .gcloudignore را ایجاد کنید:
echo ".venv/" > .gcloudignore
برنامه را روی Cloud Run مستقر کنید:
gcloud run deploy helloworld-gradio \
--source . \
--region $REGION \
--allow-unauthenticated
- گزینه
--allow-unauthenticatedسرویس را به صورت عمومی در دسترس قرار میدهد. برای جلوگیری از درخواستهای احراز هویت نشده، به جای آن--no-allow-unauthenticatedاستفاده کنید.
اولین بار، از شما خواسته میشود که یک مخزن Artifact Registry ایجاد کنید. برای تأیید، Enter بزنید:
Deploying from source requires an Artifact Registry Docker repository to store built containers. A repository named [cloud-run-source-deploy] in region [REGION] will be created. Do you want to continue (Y/n)?
این کار آپلود کد منبع شما به مخزن Artifact Registry و ساخت تصویر کانتینر شما را آغاز میکند:
Building using Buildpacks and deploying container ... * Building and deploying new service... Building Container. OK Creating Container Repository... OK Uploading sources... * Building Container... Logs are available at ...
سپس، لحظهای صبر کنید تا استقرار کامل شود. در صورت موفقیت، خط فرمان URL سرویس را نمایش میدهد:
... OK Building and deploying new service... Done. OK Creating Container Repository... OK Uploading sources... OK Building Container... Logs are available at ... OK Creating Revision... Creating Service. OK Routing traffic... OK Setting IAM Policy... Done. Service [SERVICE]... has been deployed and is serving 100 percent of traffic. Service URL: https://SERVICE-PROJECTHASH-REGIONID.a.run.app
با این دستور میتوانید آدرس سرویس را دریافت کنید:
SERVICE_URL=$( \
gcloud run services describe helloworld-gradio \
--region $REGION \
--format "value(status.address.url)" \
)
echo $SERVICE_URL
این باید چیزی شبیه به موارد زیر را نمایش دهد:
https://helloworld-gradio-PROJECTHASH-REGIONID.a.run.app
اکنون میتوانید با باز کردن URL سرویس در یک مرورگر وب، از برنامه خود استفاده کنید:

تبریک! شما به تازگی یک برنامه را در Cloud Run مستقر کردهاید. Cloud Run به طور خودکار و افقی تصویر کانتینر شما را برای مدیریت درخواستهای دریافتی مقیاسبندی میکند، سپس با کاهش تقاضا، مقیاسبندی را کاهش میدهد. شما فقط هزینه CPU، حافظه و شبکه مصرفی در طول مدیریت درخواست برای این سرویس cloud run را پرداخت میکنید.
۷. تمیز کردن
اگرچه Cloud Run در صورت عدم استفاده از سرویس، هزینهای دریافت نمیکند، اما ممکن است همچنان برای ذخیره تصویر کانتینر در Artifact Registry هزینه دریافت شود. میتوانید مخزن یا پروژه Cloud خود را حذف کنید تا از پرداخت هزینهها جلوگیری کنید. حذف پروژه Cloud، پرداخت هزینه برای تمام منابع استفاده شده در آن پروژه را متوقف میکند.
برای حذف مخزن تصویر کانتینر خود:
gcloud artifacts repositories delete cloud-run-source-deploy \
--location $REGION
برای حذف سرویس Cloud Run خود:
gcloud run services delete helloworld-gradio \
--region $REGION
برای حذف پروژه Google Cloud خود،
- شناسه پروژه فعلی خود را بازیابی کنید:
PROJECT_ID=$(gcloud config get-value core/project)
- مطمئن شوید که این پروژهای است که میخواهید حذف کنید:
echo $PROJECT_ID
- حذف پروژه:
gcloud projects delete $PROJECT_ID
۸. تبریک میگویم!

شما یک برنامه وب Gradio با عنوان "Hello World" ایجاد کردید و آن را در Cloud Run مستقر کردید!
آنچه ما پوشش دادهایم
- چگونه یک برنامه Gradio "Hello World" ایجاد کنیم.
- قبل از استقرار، برنامه را با اجرای برنامه Gradio آزمایش کنید.
- بستههای ساخت ابری و اینکه چگونه وجود
gradioدرrequirements.txtباعث میشود نیازی به داکرفایل نباشد. - استقرار برنامه Gradio در Cloud Run.
بیشتر بدانید
- مستندات Cloud Run را بررسی کنید
- برای بررسی گزینههای بیشتر ، با Cloud Run، در سه مرحله آسان از Dev to Prod (توسعه تا تولید) را تکمیل کنید
- تکمیل Django روی Cloud Run ، برای ایجاد یک پایگاه داده Cloud SQL، مدیریت اعتبارنامهها با Secret Manager و استقرار Django
- آزمایشگاههای کد Cloud Run بیشتری را ببینید ...