डाइनैमिक कॉन्टेंट जनरेट करने और उसे दिखाने के लिए, Cloud Run को Firebase Hosting के साथ जोड़ें या REST API को माइक्रोसर्विस के तौर पर बनाएं.
Cloud Run का इस्तेमाल करके, कंटेनर इमेज में पैकेज किए गए ऐप्लिकेशन को डिप्लॉय किया जा सकता है. इसके बाद, Firebase Hosting का इस्तेमाल करके, अपने कंटेनर वाले ऐप्लिकेशन को ट्रिगर करने के लिए एचटीटीपीएस अनुरोध भेजे जा सकते हैं.
- Cloud Run में कई भाषाओं का इस्तेमाल किया जा सकता है. इनमें Go, Node.js, Python, और Java शामिल हैं. इससे आपको अपनी पसंद की प्रोग्रामिंग भाषा और फ़्रेमवर्क का इस्तेमाल करने की सुविधा मिलती है.
- Cloud Run अपने-आप और हॉरिज़ॉन्टल तौर पर स्केल करता है आपकी कंटेनर इमेज, मिले अनुरोधों को मैनेज करने के लिए. इसके बाद, मांग कम होने पर स्केल कम कर देता है.
- अनुरोध को प्रोसेस करने के दौरान, सीपीयू, स्मृति, और नेटवर्किंग के इस्तेमाल के लिए ही पैसे चुकाए जाते हैं.
Cloud Run के साथ इंटिग्रेट किए गए Firebase Hosting के इस्तेमाल के उदाहरण और सैंपल के लिए, सर्वरलेस की खास जानकारी वाला हमारा लेख पढ़ें.
इस गाइड में, आपको इन कामों के बारे में जानकारी मिलेगी:
- Hello World वाला आसान ऐप्लिकेशन लिखना
- किसी ऐप्लिकेशन को कंटेनर में डालना और उसे Artifact Registry पर अपलोड करना
- Cloud Run पर कंटेनर इमेज को डिप्लॉय करना
- Hosting अनुरोधों को अपने कंटेनर वाले ऐप्लिकेशन पर भेजना
ध्यान दें कि डाइनैमिक कॉन्टेंट दिखाने की परफ़ॉर्मेंस को बेहतर बनाने के लिए, अपनी कैश मेमोरी सेटिंग को ट्यून किया जा सकता है. हालांकि, ऐसा करना ज़रूरी नहीं है.
शुरू करने से पहले
Cloud Run का इस्तेमाल करने से पहले, आपको कुछ शुरुआती टास्क पूरे करने होंगे. जैसे, Cloud Billing खाता सेट अप करना, Cloud Run एपीआई को चालू करना, और gcloud
कमांड-लाइन टूल इंस्टॉल करना.
अपने प्रोजेक्ट के लिए बिलिंग सेट अप करना
Cloud Run में बिना शुल्क के इस्तेमाल का कोटा मिलता है. हालांकि, Cloud Run का इस्तेमाल करने या उसे आज़माने के लिए, आपके पास अपने Firebase प्रोजेक्ट से जुड़ा Cloud Billing खाता होना चाहिए.
एपीआई चालू करना और SDK टूल इंस्टॉल करना
Google API कंसोल में Cloud Run एपीआई को चालू करें:
Google API कंसोल में, Cloud Run एपीआई पेज खोलें.
जब कहा जाए, तब अपना Firebase प्रोजेक्ट चुनें.
Cloud Run एपीआई पेज पर, चालू करें पर क्लिक करें.
Cloud SDK टूल को इंस्टॉल और शुरू करें.
देखें कि
gcloud
टूल, सही प्रोजेक्ट के लिए कॉन्फ़िगर किया गया है या नहीं:gcloud config list
पहला चरण: आवेदन का सैंपल लिखना
ध्यान दें कि Cloud Run, यहां दिए गए सैंपल में दिखाई गई भाषाओं के अलावा, कई अन्य भाषाओं में भी काम करता है.
helloworld-go
नाम की नई डायरेक्ट्री बनाएं. इसके बाद, डायरेक्ट्री को इनमें बदलें:mkdir helloworld-go
cd helloworld-go
helloworld.go
नाम की नई फ़ाइल बनाएं. इसके बाद, यह कोड जोड़ें:यह कोड एक बुनियादी वेब सर्वर बनाता है, जो
PORT
एनवायरमेंट वैरिएबल से तय किए गए पोर्ट पर सुनता है.
आपका ऐप्लिकेशन तैयार हो गया है और उसे कंटेनर में डालकर Artifact Registry पर अपलोड किया जा सकता है.
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 इंस्टॉल करें.
ध्यान दें कि अगले चरण में नया वेब प्रोजेक्ट बनाने के लिए, हमें सिर्फ़ यह करना होगा. Dockerfile, कंटेनर में सभी डिपेंडेंसी लोड करेगा. इस फ़ाइल के बारे में बाद में बताया गया है.
कंसोल से, cURL का इस्तेमाल करके एक नया खाली वेब प्रोजेक्ट बनाएं. इसके बाद, unzip कमांड का इस्तेमाल करें:
curl https://start.spring.io/starter.zip \ -d dependencies=web \ -d name=helloworld \ -d artifactId=helloworld \ -o helloworld.zip
unzip helloworld.zip
इससे SpringBoot प्रोजेक्ट बनता है.
/
मैपिंग को मैनेज करने के लिए,@RestController
जोड़करsrc/main/java/com/example/helloworld/HelloworldApplication.java
मेंSpringBootApplication
क्लास को अपडेट करें. साथ ही,TARGET
एनवायरमेंट वैरिएबल देने के लिए@Value
फ़ील्ड भी जोड़ें:यह कोड एक बुनियादी वेब सर्वर बनाता है, जो
PORT
एनवायरमेंट वैरिएबल से तय किए गए पोर्ट पर सुनता है.
आपका ऐप्लिकेशन तैयार हो गया है और उसे कंटेनर में डालकर Artifact Registry पर अपलोड किया जा सकता है.
दूसरा चरण: किसी ऐप्लिकेशन को कंटेनर में डालना और उसे Artifact Registry पर अपलोड करना
सोर्स फ़ाइलों वाली डायरेक्ट्री में
Dockerfile
नाम से नई फ़ाइल बनाकर, सैंपल ऐप्लिकेशन को कंटेनर में डालें. नीचे दिए गए कॉन्टेंट को अपनी फ़ाइल में कॉपी करें.Cloud Build का इस्तेमाल करके अपनी कंटेनर इमेज बनाएं. इसके लिए, Dockerfile वाली डायरेक्ट्री में जाकर, यह कमांड चलाएं:
gcloud builds submit --tag gcr.io/
PROJECT_ID /helloworldइमेज अपलोड हो जाने के बाद, आपको 'हो गया' मैसेज दिखेगा. इसमें इमेज का नाम
(gcr.io/PROJECT_ID/helloworld
) होगा.
कंटेनर इमेज अब Artifact Registry में सेव हो जाती है और ज़रूरत पड़ने पर उसका फिर से इस्तेमाल किया जा सकता है.
ध्यान दें कि Cloud Build के बजाय, अपने कंप्यूटर पर कंटेनर बनाने के लिए, Docker के स्थानीय तौर पर इंस्टॉल किए गए वर्शन का इस्तेमाल किया जा सकता है.
तीसरा चरण: Cloud Run पर कंटेनर इमेज को डिप्लॉय करना
Cloud Run देशों/इलाकों में अनुमति है
सबसे अच्छी परफ़ॉर्मेंस के लिए, यहां दिए गए क्षेत्रों का इस्तेमाल करके अपनी Cloud Run सेवा को Hosting के साथ कोलोकेट करें:
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
का जवाब दें
- कोई देश या इलाका चुनें (उदाहरण के लिए,
डिप्लॉय होने की प्रोसेस पूरी होने तक इंतज़ार करें. प्रोसेस पूरी होने पर, कमांड लाइन में सेवा का यूआरएल दिखता है. उदाहरण के लिए:
https://helloworld-RANDOM_HASH-us-central1.a.run.app वेब ब्राउज़र में सेवा का यूआरएल खोलकर, डिप्लॉय किए गए कंटेनर पर जाएं.
अगले चरण में, Firebase Hosting यूआरएल से इस कंटेनर वाले ऐप्लिकेशन को ऐक्सेस करने का तरीका बताया गया है, ताकि यह आपकी Firebase होस्ट की गई साइट के लिए डाइनैमिक कॉन्टेंट जनरेट कर सके.
चौथा चरण: होस्टिंग के अनुरोधों को अपने कंटेनर वाले ऐप्लिकेशन पर भेजना
फिर से लिखने के नियमों की मदद से, किसी खास पैटर्न से मैच करने वाले अनुरोधों को एक ही डेस्टिनेशन पर भेजा जा सकता है.
यहां दिए गए उदाहरण में, Hosting साइट पर मौजूद /helloworld
पेज से सभी अनुरोधों को अपने helloworld
कंटेनर इंस्टेंस के स्टार्टअप और रनिंग को ट्रिगर करने का तरीका बताया गया है.
पक्का करें कि:
आपके पास Firebase सीएलआई का नया वर्शन हो.
आपने Firebase Hosting को शुरू कर दिया है.
सीएलआई इंस्टॉल करने और 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
pinTag
कैसे काम करता है
run
ब्लॉक में
इस सुविधा की मदद से, यह पक्का किया जा सकता है कि आपकी साइट के डाइनैमिक कॉन्टेंट को जनरेट करने के लिए, Cloud Run सेवा में किए गए बदलाव को आपके स्टैटिक Hosting संसाधनों और Hosting कॉन्फ़िगरेशन के साथ सिंक किया जाए. साथ ही, इस सुविधा की मदद से, Hosting के झलक चैनलों पर, Cloud Run में किए गए बदलावों की झलक देखी जा सकती है.
अगर
hosting.rewrites
कॉन्फ़िगरेशन केrun
ब्लॉक में"pinTag": true
जोड़ा जाता है, तो डिप्लॉय करने के समय आपके स्टैटिक Hosting संसाधन और कॉन्फ़िगरेशन, Cloud Run सेवा के सबसे नए वर्शन पर पिन हो जाएंगे. अगर साइट के किसी वर्शन को रोल बैक किया जाता है, तो "पिन की गई" Cloud Run सेवा के बदलाव को भी रोल बैक कर दिया जाता है.यह सुविधा, Cloud Run टैग पर निर्भर करती है. हर सेवा के लिए 1,000 टैग और हर क्षेत्र के लिए 2,000 टैग की सीमा होती है. इसका मतलब है कि सैकड़ों डिप्लॉयमेंट के बाद, किसी साइट के सबसे पुराने वर्शन काम करना बंद कर सकते हैं.
आपके कंटेनर को अब इन यूआरएल से ऐक्सेस किया जा सकता है:
आपके Firebase सबडोमेन:
PROJECT_ID.web.app/
औरPROJECT_ID.firebaseapp.com/
कनेक्ट किए गए किसी भी कस्टम डोमेन:
CUSTOM_DOMAIN/
रीराइट नियमों के बारे में ज़्यादा जानकारी के लिए, Hosting कॉन्फ़िगरेशन पेज पर जाएं. अलग-अलग Hosting कॉन्फ़िगरेशन के लिए, जवाबों के प्राथमिकता क्रम के बारे में भी जाना जा सकता है.
स्थानीय तौर पर जांच करना
डेवलपमेंट के दौरान, अपनी कंटेनर इमेज को स्थानीय तौर पर चलाया और जांचा जा सकता है. ज़्यादा जानकारी के लिए, Cloud Run दस्तावेज़ पर जाएं.
अगले चरण
ग्लोबल सीडीएन पर अपने डाइनैमिक कॉन्टेंट को कैश मेमोरी में सेव करने की सुविधा सेट अप करें.
Firebase Admin SDK का इस्तेमाल करके, Firebase की अन्य सेवाओं के साथ इंटरैक्ट करें.
Cloud Run के बारे में ज़्यादा जानें. इसमें, कंटेनर सेट अप करने, मैनेज करने, और कॉन्फ़िगर करने के लिए, जानकारी देने वाली गाइड भी शामिल हैं.
Cloud Run के लिए, कीमत और कोटा और सीमाएं देखें.