আপনার গতিশীল সামগ্রী তৈরি এবং পরিবেশন করতে বা মাইক্রোসার্ভিস হিসাবে REST API তৈরি করতে Firebase Hosting সাথে Cloud Run ৷
Cloud Run ব্যবহার করে, আপনি একটি কন্টেইনার ইমেজে প্যাকেজ করা একটি অ্যাপ্লিকেশন স্থাপন করতে পারেন। তারপর, Firebase Hosting ব্যবহার করে, আপনি আপনার কন্টেইনারাইজড অ্যাপ ট্রিগার করার জন্য HTTPS অনুরোধগুলিকে নির্দেশ করতে পারেন।
- Cloud Run বেশ কয়েকটি ভাষা সমর্থন করে (Go, Node.js, Python, এবং Java সহ), আপনাকে প্রোগ্রামিং ভাষা এবং আপনার পছন্দের ফ্রেমওয়ার্ক ব্যবহার করার নমনীয়তা প্রদান করে।
- Cloud Run স্বয়ংক্রিয়ভাবে এবং অনুভূমিকভাবে প্রাপ্ত অনুরোধগুলি পরিচালনা করতে আপনার কন্টেইনার চিত্রকে স্কেল করে , তারপর চাহিদা কমে গেলে স্কেল করে।
- অনুরোধ পরিচালনার সময় আপনি শুধুমাত্র CPU, মেমরি এবং নেটওয়ার্কিংয়ের জন্য অর্থ প্রদান করেন।
উদাহরণ স্বরূপ Firebase Hosting সাথে একীভূত Cloud Run ক্ষেত্রে কেস এবং নমুনা ব্যবহার করুন, আমাদের সার্ভারহীন ওভারভিউ দেখুন।
এই নির্দেশিকা আপনাকে দেখায় কিভাবে:
- একটি সাধারণ হ্যালো ওয়ার্ল্ড অ্যাপ্লিকেশন লিখুন
- একটি অ্যাপ কন্টেইনারাইজ করুন এবং এটি Artifact Registry আপলোড করুন
- Cloud Run কন্টেইনার ইমেজ স্থাপন করুন
- আপনার কন্টেইনারাইজড অ্যাপে সরাসরি Hosting অনুরোধ
মনে রাখবেন যে গতিশীল সামগ্রী পরিবেশন করার কর্মক্ষমতা উন্নত করতে, আপনি ঐচ্ছিকভাবে আপনার ক্যাশে সেটিংস টিউন করতে পারেন৷
আপনি শুরু করার আগে
Cloud Run ব্যবহার করার আগে, আপনাকে একটি Cloud Billing অ্যাকাউন্ট সেট আপ করা, Cloud Run API সক্ষম করা এবং gcloud
কমান্ড লাইন টুল ইনস্টল করা সহ কিছু প্রাথমিক কাজ সম্পন্ন করতে হবে।
আপনার প্রকল্পের জন্য বিলিং সেট আপ করুন
Cloud Run বিনামূল্যে ব্যবহারের কোটা অফার করে, কিন্তু Cloud Run ব্যবহার বা চেষ্টা করার জন্য আপনার ফায়ারবেস প্রকল্পের সাথে যুক্ত একটি Cloud Billing অ্যাকাউন্ট থাকতে হবে।
API সক্ষম করুন এবং SDK ইনস্টল করুন
Google APIs কনসোলে Cloud Run API সক্ষম করুন:
Google APIs কনসোলে Cloud Run API পৃষ্ঠাটি খুলুন।
অনুরোধ করা হলে, আপনার Firebase প্রকল্প নির্বাচন করুন।
Cloud Run API পৃষ্ঠায় Enable এ ক্লিক করুন।
ক্লাউড SDK ইনস্টল করুন এবং আরম্ভ করুন ।
সঠিক প্রকল্পের জন্য
gcloud
টুল কনফিগার করা হয়েছে কিনা পরীক্ষা করুন:gcloud config list
ধাপ 1 : নমুনা আবেদন লিখুন
উল্লেখ্য যে Cloud Run নিম্নলিখিত নমুনায় দেখানো ভাষা ছাড়াও অন্যান্য অনেক ভাষা সমর্থন করে।
যাও
helloworld-go
নামে একটি নতুন ডিরেক্টরি তৈরি করুন, তারপরে এটিতে ডিরেক্টরি পরিবর্তন করুন:mkdir helloworld-go
cd helloworld-go
helloworld.go
নামে একটি নতুন ফাইল তৈরি করুন, তারপর নিম্নলিখিত কোড যোগ করুন:এই কোডটি একটি মৌলিক ওয়েব সার্ভার তৈরি করে যা
PORT
পরিবেশ পরিবর্তনশীল দ্বারা সংজ্ঞায়িত পোর্টে শোনে।
আপনার অ্যাপটি শেষ হয়েছে এবং কনটেইনারাইজড এবং Artifact Registry আপলোড করার জন্য প্রস্তুত।
Node.js
helloworld-nodejs
নামে একটি নতুন ডিরেক্টরি তৈরি করুন, তারপরে এটিতে ডিরেক্টরি পরিবর্তন করুন:mkdir helloworld-nodejs
cd helloworld-nodejs
নিম্নলিখিত বিষয়বস্তু সহ একটি
package.json
ফাইল তৈরি করুন:index.js
নামে একটি নতুন ফাইল তৈরি করুন, তারপর নিম্নলিখিত কোড যোগ করুন:এই কোডটি একটি মৌলিক ওয়েব সার্ভার তৈরি করে যা
PORT
পরিবেশ পরিবর্তনশীল দ্বারা সংজ্ঞায়িত পোর্টে শোনে।
আপনার অ্যাপটি শেষ হয়েছে এবং কনটেইনারাইজড এবং Artifact Registry আপলোড করার জন্য প্রস্তুত।
পাইথন
helloworld-python
নামে একটি নতুন ডিরেক্টরি তৈরি করুন, তারপরে এটিতে ডিরেক্টরি পরিবর্তন করুন:mkdir helloworld-python
cd helloworld-python
app.py
নামে একটি নতুন ফাইল তৈরি করুন, তারপরে নিম্নলিখিত কোড যোগ করুন:এই কোডটি একটি মৌলিক ওয়েব সার্ভার তৈরি করে যা
PORT
পরিবেশ পরিবর্তনশীল দ্বারা সংজ্ঞায়িত পোর্টে শোনে।
আপনার অ্যাপটি শেষ হয়েছে এবং কনটেইনারাইজড এবং Artifact Registry আপলোড করার জন্য প্রস্তুত।
জাভা
Java SE 8 বা পরবর্তী JDK এবং CURL ইনস্টল করুন।
মনে রাখবেন যে পরবর্তী ধাপে নতুন ওয়েব প্রজেক্ট তৈরি করতে আমাদের শুধুমাত্র এটি করতে হবে। ডকারফাইল, যা পরে বর্ণিত হয়েছে, সমস্ত নির্ভরতা ধারকটিতে লোড করবে।
কনসোল থেকে, সিআরএল ব্যবহার করে একটি নতুন খালি ওয়েব প্রকল্প তৈরি করুন তারপর কমান্ডগুলি আনজিপ করুন:
curl https://start.spring.io/starter.zip \ -d dependencies=web \ -d name=helloworld \ -d artifactId=helloworld \ -o helloworld.zip
unzip helloworld.zip
এটি একটি স্প্রিংবুট প্রকল্প তৈরি করে।
src/main/java/com/example/helloworld/HelloworldApplication.java
তেSpringBootApplication
ক্লাস আপডেট করুন একটি@RestController
যোগ করে/
ম্যাপিং পরিচালনা করতে এবং এছাড়াওTARGET
এনভায়রনমেন্ট ভেরিয়েবল প্রদান করতে একটি@Value
ক্ষেত্র যোগ করুন:এই কোডটি একটি মৌলিক ওয়েব সার্ভার তৈরি করে যা
PORT
পরিবেশ পরিবর্তনশীল দ্বারা সংজ্ঞায়িত পোর্টে শোনে।
আপনার অ্যাপটি শেষ হয়েছে এবং কনটেইনারাইজড এবং Artifact Registry আপলোড করার জন্য প্রস্তুত।
ধাপ 2 : একটি অ্যাপ কন্টেইনারাইজ করুন এবং এটি Artifact Registry আপলোড করুন
সোর্স ফাইলগুলির মতো একই ডিরেক্টরিতে
Dockerfile
নামে একটি নতুন ফাইল তৈরি করে নমুনা অ্যাপটিকে ধারণ করুন৷ আপনার ফাইলে নিম্নলিখিত বিষয়বস্তু অনুলিপি করুন.যাও
Node.js
পাইথন
জাভা
আপনার ডকারফাইল ধারণকারী ডিরেক্টরি থেকে নিম্নলিখিত কমান্ডটি চালিয়ে Cloud Build ব্যবহার করে আপনার কন্টেইনার ইমেজ তৈরি করুন:
gcloud builds submit --tag gcr.io/PROJECT_ID/helloworld
সাফল্যের পরে, আপনি ছবির নাম সহ একটি সফল বার্তা দেখতে পাবেন
(gcr.io/ PROJECT_ID /helloworld
).
ধারক চিত্রটি এখন Artifact Registry সংরক্ষণ করা হয়েছে এবং ইচ্ছা হলে পুনরায় ব্যবহার করা যেতে পারে।
মনে রাখবেন, Cloud Build এর পরিবর্তে, আপনি স্থানীয়ভাবে আপনার কন্টেইনার তৈরি করতে Docker-এর স্থানীয়ভাবে ইনস্টল করা সংস্করণ ব্যবহার করতে পারেন।
ধাপ 3 : Cloud Run কন্টেইনার ইমেজ স্থাপন করুন
সেরা পারফরম্যান্সের জন্য, নিম্নলিখিত অঞ্চলগুলি ব্যবহার করে Hosting সাথে আপনার Cloud Run পরিষেবাটি সংযোজন করুন:
-
us-west1
-
us-central1
-
us-east1
-
europe-west1
-
asia-east1
Hosting থেকে Cloud Run পুনর্লিখন নিম্নলিখিত অঞ্চলে সমর্থিত:
-
asia-east1
-
asia-east2
-
asia-northeast1
-
asia-northeast2
-
asia-northeast3
-
asia-south1
-
asia-south2
-
asia-southeast1
-
asia-southeast2
-
australia-southeast1
-
australia-southeast2
-
europe-central2
-
europe-north1
-
europe-southwest1
-
europe-west1
-
europe-west12
-
europe-west2
-
europe-west3
-
europe-west4
-
europe-west6
-
europe-west8
-
europe-west9
-
me-central1
-
me-west1
-
northamerica-northeast1
-
northamerica-northeast2
-
southamerica-east1
-
southamerica-west1
-
us-central1
-
us-east1
-
us-east4
-
us-east5
-
us-south1
-
us-west1
-
us-west2
-
us-west3
-
us-west4
-
us-west1
-
us-central1
-
us-east1
-
europe-west1
-
asia-east1
নিম্নলিখিত কমান্ড ব্যবহার করে স্থাপন করুন:
gcloud run deploy --image gcr.io/PROJECT_ID/helloworld
যখন অনুরোধ করা হয়:
- একটি অঞ্চল নির্বাচন করুন (উদাহরণস্বরূপ
us-central1
) - পরিষেবার নাম নিশ্চিত করুন (উদাহরণস্বরূপ,
helloworld
) - অপ্রমাণিত আহ্বানের অনুমতি দিতে
Y
উত্তর দিন
- একটি অঞ্চল নির্বাচন করুন (উদাহরণস্বরূপ
স্থাপনা সম্পূর্ণ হওয়ার জন্য কয়েক মুহূর্ত অপেক্ষা করুন। সফল হলে, কমান্ড লাইন পরিষেবা URL প্রদর্শন করে। যেমন:
https://helloworld- RANDOM_HASH -us-central1.a.run.appএকটি ওয়েব ব্রাউজারে পরিষেবা URL খুলে আপনার নিয়োজিত কন্টেইনারে যান৷
পরবর্তী ধাপে আপনাকে Firebase Hosting ইউআরএল থেকে এই কন্টেইনারাইজড অ্যাপটি কীভাবে অ্যাক্সেস করতে হয় তা নিয়ে নিয়ে যায় যাতে এটি আপনার Firebase-হোস্ট করা সাইটের জন্য গতিশীল সামগ্রী তৈরি করতে পারে।
ধাপ 4: আপনার কন্টেইনারাইজড অ্যাপে সরাসরি হোস্টিং অনুরোধ
পুনর্লিখনের নিয়মের সাহায্যে, আপনি একটি একক গন্তব্যে নির্দিষ্ট প্যাটার্নের সাথে মেলে এমন অনুরোধগুলিকে সরাসরি করতে পারেন।
নিচের উদাহরণটি দেখায় কিভাবে আপনার Hosting সাইটের পৃষ্ঠা /helloworld
থেকে আপনার helloworld
কন্টেইনার ইনস্ট্যান্সের স্টার্টআপ এবং রানিং ট্রিগার করতে হয়।
নিশ্চিত করুন যে:
আপনার কাছে Firebase CLI এর সর্বশেষ সংস্করণ রয়েছে।
আপনি Firebase Hosting শুরু করেছেন।
CLI ইনস্টল করা এবং Hosting শুরু করার বিষয়ে বিস্তারিত নির্দেশাবলীর জন্য, Hosting জন্য শুরু করুন গাইড দেখুন।
আপনার
firebase.json
ফাইলটি খুলুন।hosting
বিভাগের অধীনে নিম্নলিখিতrewrite
কনফিগারেশন যোগ করুন:"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 পরিষেবার সংশোধন আপনার স্ট্যাটিক Hosting সংস্থান এবং Hosting কনফিগারেশনের সাথে সিঙ্কে রাখা হয়েছে৷ এছাড়াও, এই বৈশিষ্ট্যটি আপনাকে Hosting প্রিভিউ চ্যানেলে Cloud Run আপনার পুনর্লিখনের পূর্বরূপ দেখতে দেয়।
আপনি যদি "pinTag" যোগ করেন:
hosting.rewrites
কনফিগারেশনের একটিrun
ব্লকে"pinTag": true
, আপনার স্ট্যাটিক Hosting সংস্থান এবং কনফিগারেশন Cloud Run পরিষেবার সবচেয়ে সাম্প্রতিক সংশোধনে পিন করা হবে, স্থাপনের সময়। আপনি যদি আপনার সাইটের একটি সংস্করণ রোল ব্যাক করেন, তাহলে "পিন করা" Cloud Run পরিষেবার সংশোধনও ফিরিয়ে আনা হবে৷This feature relies on Cloud Run tags , which have a limit of 1000 tags per service and 2000 tags per region. এর মানে হল শত শত স্থাপনের পরে, একটি সাইটের প্রাচীনতম সংস্করণগুলি কাজ করা বন্ধ করে দিতে পারে।
আপনার ধারকটি এখন নিম্নলিখিত URLগুলির মাধ্যমে পৌঁছানো যায়:
আপনার ফায়ারবেস সাবডোমেনস:
PROJECT_ID .web.app/
এবংPROJECT_ID .firebaseapp.com/
যেকোনো সংযুক্ত কাস্টম ডোমেন :
CUSTOM_DOMAIN /
পুনর্লিখনের নিয়ম সম্পর্কে আরও বিস্তারিত জানার জন্য Hosting কনফিগারেশন পৃষ্ঠায় যান। আপনি বিভিন্ন Hosting কনফিগারেশনের প্রতিক্রিয়াগুলির অগ্রাধিকার ক্রম সম্পর্কেও শিখতে পারেন।
স্থানীয়ভাবে পরীক্ষা করুন
বিকাশের সময়, আপনি স্থানীয়ভাবে আপনার ধারক চিত্রটি চালাতে এবং পরীক্ষা করতে পারেন। বিস্তারিত নির্দেশাবলীর জন্য, Cloud Run ডকুমেন্টেশন দেখুন।
পরবর্তী পদক্ষেপ
একটি বিশ্বব্যাপী CDN-এ আপনার গতিশীল সামগ্রীর ক্যাশিং সেট আপ করুন ৷
Firebase অ্যাডমিন SDK ব্যবহার করে অন্যান্য Firebase পরিষেবার সাথে যোগাযোগ করুন।
Cloud Run সম্বন্ধে আরও জানুন, কন্টেনার সেট আপ, পরিচালনা এবং কনফিগার করার জন্য বিস্তারিত কীভাবে-প্রদর্শক সহ।
Cloud Run জন্য মূল্য এবং কোটা এবং সীমা পর্যালোচনা করুন।