1. مقدمه
Cloud Run یک پلت فرم محاسباتی مدیریت شده است که به شما امکان می دهد کانتینرهای بدون حالتی را اجرا کنید که با استفاده از درخواست های HTTP قابل فراخوانی هستند. این برنامه بر اساس پروژه منبع باز Knative ساخته شده است و امکان حمل بارهای کاری شما را در پلتفرم ها فراهم می کند. Cloud Run بدون سرور است: تمام مدیریت زیرساخت را انتزاعی می کند، بنابراین شما می توانید روی آنچه که مهمتر است تمرکز کنید - ساخت برنامه های کاربردی عالی.
هدف از این آموزش ایجاد یک برنامه وب Streamlit "Hello World" و استقرار آن در Cloud Run است.
چیزی که یاد خواهید گرفت
- چگونه یک برنامه Streamlit "Hello World" ایجاد کنیم.
- آزمایش برنامه با اجرای برنامه Streamlit قبل از استقرار.
- Cloud Buildpacks و اینکه چگونه وجود
streamlit
در یکrequirements.txt
اجازه میدهد که هیچ Dockerfile مورد نیاز نباشد. - نحوه استقرار یک برنامه Streamlit در Cloud Run.
2. راه اندازی و الزامات
تنظیم محیط خود به خود
- به Google Cloud Console وارد شوید و یک پروژه جدید ایجاد کنید یا از یک موجود استفاده مجدد کنید. اگر قبلاً یک حساب Gmail یا Google Workspace ندارید، باید یک حساب ایجاد کنید .
- نام پروژه نام نمایشی برای شرکت کنندگان این پروژه است. این یک رشته کاراکتری است که توسط API های Google استفاده نمی شود. همیشه می توانید آن را به روز کنید.
- شناسه پروژه در تمام پروژههای Google Cloud منحصربهفرد است و تغییرناپذیر است (پس از تنظیم نمیتوان آن را تغییر داد). Cloud Console به طور خودکار یک رشته منحصر به فرد تولید می کند. معمولاً برای شما مهم نیست که چیست. در اکثر کدها، باید شناسه پروژه خود را ارجاع دهید (معمولاً با نام
PROJECT_ID
شناخته می شود). اگر شناسه تولید شده را دوست ندارید، ممکن است یک شناسه تصادفی دیگر ایجاد کنید. از طرف دیگر، میتوانید خودتان را امتحان کنید، و ببینید آیا در دسترس است یا خیر. پس از این مرحله نمی توان آن را تغییر داد و در طول مدت پروژه باقی می ماند. - برای اطلاع شما، یک مقدار سوم وجود دارد، یک شماره پروژه ، که برخی از API ها از آن استفاده می کنند. در مورد هر سه این مقادیر در مستندات بیشتر بیاموزید.
- در مرحله بعد، برای استفاده از منابع Cloud/APIها باید صورتحساب را در کنسول Cloud فعال کنید . اجرا کردن از طریق این کد لبه هزینه زیادی نخواهد داشت. برای خاموش کردن منابع برای جلوگیری از تحمیل صورتحساب فراتر از این آموزش، میتوانید منابعی را که ایجاد کردهاید حذف کنید یا پروژه را حذف کنید. کاربران جدید Google Cloud واجد شرایط برنامه آزمایشی رایگان 300 دلاری هستند.
Cloud Shell را راه اندازی کنید
در حالی که Google Cloud را می توان از راه دور از لپ تاپ شما کار کرد، در این آموزش شما از Cloud Shell استفاده می کنید، یک محیط خط فرمان که در Cloud اجرا می شود.
Cloud Shell را فعال کنید
- از Cloud Console، روی Activate Cloud Shell کلیک کنید
اگر این اولین باری است که Cloud Shell را راه اندازی می کنید، با یک صفحه میانی روبرو می شوید که آن را توصیف می کند. اگر با یک صفحه میانی مواجه شدید، روی Continue کلیک کنید.
تهیه و اتصال به Cloud Shell فقط باید چند لحظه طول بکشد.
این ماشین مجازی با تمام ابزارهای توسعه مورد نیاز بارگذاری شده است. این یک فهرست اصلی 5 گیگابایتی دائمی ارائه میکند و در Google Cloud اجرا میشود، که عملکرد و احراز هویت شبکه را بسیار افزایش میدهد. بسیاری از کارهای شما، اگر نه همه، در این کد لبه با مرورگر قابل انجام است.
پس از اتصال به Cloud Shell، باید ببینید که احراز هویت شده اید و پروژه به ID پروژه شما تنظیم شده است.
- برای تایید احراز هویت، دستور زیر را در 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].
3. 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.
اکنون، شما آماده شروع کار و نوشتن برنامه خود هستید...
4. برنامه را بنویسید
در این مرحله، یک برنامه کاربردی Python Streamlit "Hello World" را می سازید که به درخواست های HTTP پاسخ می دهد.
دایرکتوری کار
از Cloud Shell برای ایجاد دایرکتوری کاری به نام helloworld-streamlit
استفاده کنید و به آن سوئیچ کنید:
mkdir ~/helloworld-streamlit && cd ~/helloworld-streamlit
main.py
فایلی به نام main.py
ایجاد کنید:
touch main.py
فایل را با ویرایشگر خط فرمان دلخواه خود (nano، vim، یا emacs) یا با کلیک کردن روی دکمه Cloud Shell Editor ویرایش کنید:
برای ویرایش مستقیم فایل با Cloud Shell Editor از این دستور استفاده کنید:
cloudshell edit main.py
main.py
import streamlit as st
st.title("Hello World! 👋🌎")
st.markdown(
"""
This is a demo Streamlit app.
Enter your name in the text box below and press a button to see some fun features in Streamlit.
"""
)
name = st.text_input("Enter your name:")
# Use columns to create buttons side by side
col1, col2 = st.columns(2)
with col1:
if st.button("Send balloons! 🎈"):
st.balloons()
st.write(f"Time to celebrate {name}! 🥳")
st.write("You deployed a Streamlit app! 👏")
with col2:
if st.button("Send snow! ❄️"):
st.snow()
st.write(f"Let it snow {name}! 🌨️")
st.write("You deployed a Streamlit app! 👏")
این کد یک سرویس وب اولیه ایجاد می کند که به درخواست های HTTP GET با یک پیام دوستانه پاسخ می دهد.
الزامات. txt
ترمینال را دوباره باز کنید و فایلی به نام requirements.txt
اضافه کنید تا وابستگی ها را تعریف کنید:
touch requirements.txt
برای ویرایش مستقیم فایل با Cloud Shell Editor از این دستور استفاده کنید:
cloudshell edit requirements.txt
requirements.txt
# https://pypi.org/project/streamlit
streamlit==1.47.0
برنامه Streamlit آماده استقرار است، اما اجازه دهید ابتدا آن را آزمایش کنیم...
5. برنامه را تست کنید
برای آزمایش برنامه، از uv (بسته بسیار سریع پایتون و مدیر پروژه) استفاده کنید که از قبل در Cloud Shell نصب شده است.
برای آزمایش برنامه، یک محیط مجازی ایجاد کنید:
uv venv
وابستگی ها را نصب کنید:
uv pip install -r requirements.txt
برنامه را با استفاده از streamlit run
(غیرفعال کردن --server.enableCORS
برای آزمایش به دلیل تداخل با Cloud Shell) شروع کنید:
uv run streamlit run main.py --server.port=8080 --server.enableCORS=false
گزارشها نشان میدهند که برنامه Streamlit در حال اجرا است:
You can now view your Streamlit app in your browser. Local URL: http://localhost:8080 Network URL: http://10.1.0.1:8080 External URL: http://34.37.7.94:8080
در پنجره Cloud Shell، روی نماد Web Preview
کلیک کنید و Preview on port 8080
انتخاب کنید:
این باید یک پنجره مرورگر باز کند که Hello World! 👋🌎
عنوان .
سعی کنید نام خود را پر کنید و دو دکمه روی صفحه را آزمایش کنید!
وقتی کارتان تمام شد، به جلسه اصلی Cloud Shell برگردید و برنامه Streamlit را با CTRL+C
متوقف کنید.
برنامه همانطور که انتظار می رود کار می کند: زمان استقرار آن ...
6. در Cloud Run مستقر شوید
Cloud Run منطقهای است، به این معنی که زیرساختی که سرویسهای Cloud Run شما را اجرا میکند در یک منطقه خاص قرار دارد و توسط Google مدیریت میشود تا بهطور اضافی در تمام مناطق آن منطقه در دسترس باشد. منطقه ای را که برای استقرار خود استفاده می کنید، تعریف کنید، به عنوان مثال:
REGION=europe-west1
مطمئن شوید که هنوز در دایرکتوری کاری هستید:
ls
این باید فایل های زیر را فهرست کند:
main.py requirements.txt
قبل از استقرار، یک فایل .gcloudignore
با .venv/
در آن ایجاد کنید. این امر مانع از استقرار Cloud Run میشود که محیط مجازی را که از uv
در طول آزمایش محلی ایجاد شده است، شامل شود.
.gcloudignore
با دستور زیر ایجاد کنید:
echo ".venv/" > .gcloudignore
استقرار برنامه در Cloud Run:
gcloud run deploy helloworld-streamlit \
--source . \
--region $REGION \
--allow-unauthenticated
- گزینه
--allow-unauthenticated
سرویس را در دسترس عموم قرار می دهد. برای جلوگیری از درخواست های احراز هویت نشده، به جای آن--no-allow-unauthenticated
استفاده کنید.
اولین بار، یک اعلان برای ایجاد یک مخزن رجیستری Artifact دریافت خواهید کرد. برای تأیید اعتبار 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
با این دستور می توانید URL سرویس را دریافت کنید:
SERVICE_URL=$( \
gcloud run services describe helloworld-streamlit \
--region $REGION \
--format "value(status.address.url)" \
)
echo $SERVICE_URL
این باید چیزی شبیه به زیر نمایش دهد:
https://helloworld-streamlit-PROJECTHASH-REGIONID.a.run.app
اکنون می توانید با باز کردن URL سرویس در یک مرورگر وب از برنامه خود استفاده کنید:
تبریک می گویم! شما به تازگی یک برنامه را در Cloud Run مستقر کرده اید. Cloud Run به صورت خودکار و افقی تصویر کانتینر شما را برای رسیدگی به درخواستهای دریافتی تغییر میدهد، سپس با کاهش تقاضا کاهش مییابد. شما فقط برای CPU، حافظه و شبکه مصرف شده در هنگام رسیدگی به درخواست برای این سرویس ابری پرداخت می کنید.
7. پاکسازی کنید
در حالی که Cloud Run زمانی که از سرویس استفاده نمیشود شارژ نمیشود، ممکن است همچنان برای ذخیره تصویر ظرف در Artifact Registry هزینه دریافت کنید. برای جلوگیری از تحمیل هزینه، می توانید مخزن خود را حذف کنید یا پروژه Cloud خود را حذف کنید. با حذف پروژه Cloud، صورتحساب تمام منابع مورد استفاده در آن پروژه متوقف میشود.
برای حذف مخزن تصویر ظرف خود:
gcloud artifacts repositories delete cloud-run-source-deploy \
--location $REGION
برای حذف سرویس Cloud Run:
gcloud run services delete helloworld-streamlit \
--region $REGION
برای حذف پروژه Google Cloud خود،
- شناسه پروژه فعلی خود را بازیابی کنید:
PROJECT_ID=$(gcloud config get-value core/project)
- مطمئن شوید که این پروژه ای است که می خواهید حذف کنید:
echo $PROJECT_ID
- پروژه را حذف کنید:
gcloud projects delete $PROJECT_ID
8. تبریک!
شما یک برنامه وب Streamlit "Hello World" ایجاد کردید و آن را در Cloud Run مستقر کردید!
آنچه را پوشش داده ایم
- چگونه یک برنامه Streamlit "Hello World" ایجاد کنیم.
- آزمایش برنامه با اجرای برنامه Streamlit قبل از استقرار.
- Cloud Buildpacks و اینکه چگونه وجود
streamlit
در یکrequirements.txt
اجازه میدهد که هیچ Dockerfile مورد نیاز نباشد. - استقرار برنامه Streamlit در Cloud Run.
بیشتر بدانید
- مستندات Cloud Run را بررسی کنید
- برای بررسی گزینههای بیشتر، برنامهنویس را در سه مرحله آسان با اجرای ابری کامل کنید
- Django را در Cloud Run کامل کنید، برای ایجاد یک Cloud SQL DB، مدیریت اعتبار با Secret Manager، و استقرار جنگو
- بیشتر کدهای Cloud Run را بررسی کنید...