আপনার পরিবর্তনশীল কন্টেন্ট জেনারেট ও পরিবেশন করতে অথবা মাইক্রোসার্ভিস হিসেবে REST API তৈরি করতে, Cloud Run-এর সাথে Firebase Hosting পেয়ার করুন।
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 ব্যবহার বা পরীক্ষা করে দেখার জন্য আপনার Firebase প্রোজেক্টের সাথে Cloud Billing অ্যাকাউন্ট অবশ্যই যুক্ত থাকতে হবে।
API চালু ও SDK ইনস্টল করুন
Google APIs কনসোলে Cloud Run API চালু করুন:
Google APIs কনসোলে Cloud Run API পৃষ্ঠা খুলুন।
প্রম্পট করা হলে, আপনার Firebase প্রোজেক্ট বেছে নিন।
Cloud Run API পৃষ্ঠায় চালু করুন বিকল্পে ক্লিক করুন।
Cloud SDK ইনস্টল ও ইনিশিয়ালাইজ করুন।
gcloudটুলটি সঠিক প্রোজেক্টের জন্য কনফিগার করা হয়েছে কিনা তা চেক করুন:gcloud config list
ধাপ ১: স্যাম্পেল অ্যাপ্লিকেশন লিখুন
মনে রাখবেন, নিম্নলিখিত স্যাম্পেলে দেখানো ভাষা ছাড়াও Cloud Run অন্যান্য অনেক ভাষা সাপোর্ট করে।
Go
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-এ আপলোড করার জন্য রেডি।
Python
helloworld-pythonনামে নতুন ডিরেক্টরি তৈরি করুন, তারপর ডিরেক্টরি পরিবর্তন করে এতে যান:mkdir helloworld-python
cd helloworld-python
app.pyনামে একটি নতুন ফাইল তৈরি করুন, তারপর নিম্নলিখিত কোড যোগ করুন:এই কোডটি একটি প্রাথমিক ওয়েব সার্ভার তৈরি করে যা
PORTএনভায়রনমেন্ট ভেরিয়েবল দ্বারা সংজ্ঞায়িত পোর্টে শোনে।
আপনার অ্যাপ তৈরি হয়ে গেছে এবং কন্টেনারাইজ করে Artifact Registry-এ আপলোড করার জন্য রেডি।
জাভা
Java SE 8 বা তার পরবর্তী JDK এবং CURL ইনস্টল করুন।
মনে রাখবেন, পরবর্তী ধাপে নতুন ওয়েব প্রোজেক্ট তৈরি করার জন্যই শুধু আমাদের এটি করতে হবে। Dockerfile, যা পরে বর্ণনা করা হয়েছে, কন্টেনারে সমস্ত নির্ভরতা লোড করবে।
কনসোল থেকে, cURL ব্যবহার করে নতুন ফাঁকা ওয়েব প্রোজেক্ট তৈরি করুন, তারপর আনজিপ কমান্ড:
curl https://start.spring.io/starter.zip \ -d dependencies=web \ -d name=helloworld \ -d artifactId=helloworld \ -o helloworld.zipunzip helloworld.zip
এটি SpringBoot প্রোজেক্ট তৈরি করে।
src/main/java/com/example/helloworld/HelloworldApplication.java-এSpringBootApplicationক্লাস আপডেট করুন। এটি করতে/ম্যাপিং ম্যানেজ করার জন্য@RestControllerযোগ করুন এবংTARGETএনভায়রনমেন্ট ভেরিয়েবল প্রদান করার জন্য@Valueফিল্ড যোগ করুন:এই কোডটি একটি প্রাথমিক ওয়েব সার্ভার তৈরি করে যা
PORTএনভায়রনমেন্ট ভেরিয়েবল দ্বারা সংজ্ঞায়িত পোর্টে শোনে।
আপনার অ্যাপ তৈরি হয়ে গেছে এবং কন্টেনারাইজ করে Artifact Registry-এ আপলোড করার জন্য রেডি।
ধাপ ২: অ্যাপ কন্টেনারাইজ করে Artifact Registry-এ আপলোড করুন
সোর্স ফাইলের একই ডিরেক্টরিতে
Dockerfileনামের নতুন ফাইল তৈরি করে স্যাম্পেল অ্যাপটি কন্টেনারাইজ করুন। আপনার ফাইলে নিম্নলিখিত কন্টেন্ট কপি করুন।Go
Node.js
Python
জাভা
আপনার Dockerfile আছে এমন ডিরেক্টরি থেকে নিম্নলিখিত কমান্ড রান করিয়ে Cloud Build ব্যবহার করে আপনার কন্টেনার ইমেজ তৈরি করুন:
gcloud builds submit --tag gcr.io/PROJECT_ID/helloworld
সফল হলে, আপনি একটি 'সফল' মেসেজ দেখতে পাবেন যাতে ছবির নাম
(gcr.io/PROJECT_ID/helloworld) থাকবে।
কন্টেনার ইমেজ এখন Artifact Registry-এ স্টোর করা আছে এবং প্রয়োজন হলে আবার ব্যবহার করা যেতে পারে।
মনে রাখবেন যে, Cloud Build-এর পরিবর্তে, আপনি Docker-এর লোকাল ইনস্টল করা ভার্সন ব্যবহার করে আপনার কন্টেনার লোকালভাবে তৈরি করতে পারবেন।
ধাপ ৩: Cloud Run-এ কন্টেনার ইমেজ ডিপ্লয় করুন
এই কমান্ড ব্যবহার করে ডিপ্লয় করুন:
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 URL থেকে অ্যাক্সেস করতে হয় যাতে এটি আপনার Firebase-হোস্ট করা সাইটের জন্য পরিবর্তনশীল কন্টেন্ট তৈরি করতে পারে।
ধাপ ৪: আপনার কন্টেনারাইজড অ্যাপে হোস্টিংয়ের অনুরোধ পাঠান
রিরাইট রুল ব্যবহার করে, আপনি নির্দিষ্ট প্যাটার্নের সাথে ম্যাচ করে এমন অনুরোধ একটি গন্তব্যে পাঠাতে পারবেন।
নিম্নলিখিত উদাহরণে দেখানো হয়েছে যে কীভাবে আপনার 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
আপনার কন্টেনার এখন নিম্নলিখিত URL-এর মাধ্যমে অ্যাক্সেস করা যাবে:
আপনার Firebase সাবডোমেন:
PROJECT_ID.web.app/এবংPROJECT_ID.firebaseapp.com/কানেক্ট করা যেকোনও কাস্টম ডোমেন:
CUSTOM_DOMAIN/
Hosting কনফিগারেশন পৃষ্ঠা দেখুন রিরাইট সংক্রান্ত নিয়ম সম্পর্কে আরও জানতে। এছাড়াও, আপনি বিভিন্ন Hosting কনফিগারেশনের জন্য উত্তরের অগ্রাধিকারের ক্রম সম্পর্কে জানতে পারবেন।
স্থানীয়ভাবে পরীক্ষা করুন
ডেভেলপমেন্টের সময়, আপনি লোকালি কন্টেনার ইমেজ রান ও টেস্ট করতে পারবেন। বিস্তারিত নির্দেশাবলীর জন্য, Cloud Run ডকুমেন্টেশন দেখুন।
পরবর্তী ধাপ
গ্লোবাল CDN-এ আপনার পরিবর্তনশীল কন্টেন্টের ক্যাশিং সেট-আপ করুন।
Firebase Admin SDK ব্যবহার করে অন্যান্য Firebase পরিষেবার সাথে ইন্টার্যাক্ট করুন।
Cloud Run সম্পর্কে আরও জানুন, যার মধ্যে রয়েছে কন্টেনার সেট-আপ, ম্যানেজ ও কনফিগার করার জন্য বিস্তারিত নির্দেশিকা।
Cloud Run-এর জন্য মূল্য এবং কোটা ও সীমা পর্যালোচনা করুন।