Cloud Run को Firebase Hosting के साथ जोड़ें, ताकि लगातार अपडेट होने वाली जानकारी जनरेट की जा सके और उसे दिखाया जा सके. इसके अलावा, REST API को माइक्रोसर्विस के तौर पर बनाया जा सके.
Cloud Run का इस्तेमाल करके, कंटेनर इमेज में पैकेज किए गए ऐप्लिकेशन को डिप्लॉय किया जा सकता है. इसके बाद, Firebase Hosting का इस्तेमाल करके, एचटीटीपीएस अनुरोधों को ट्रिगर किया जा सकता है, ताकि कंटेनर में मौजूद आपका ऐप्लिकेशन ट्रिगर हो सके.
- Cloud Run, कई भाषाओं के साथ काम करता है. इनमें Go, Node.js, Python, और Java शामिल हैं. इससे आपको अपनी पसंद की प्रोग्रामिंग भाषा और फ़्रेमवर्क का इस्तेमाल करने की सुविधा मिलती है.
- Cloud Run मिले अनुरोधों को मैनेज करने के लिए, आपकी कंटेनर इमेज को अपने-आप और हॉरिज़ॉन्टल तौर पर स्केल करता है. इसके बाद, मांग कम होने पर उसे डाउनस्केल करता है.
- आपको सिर्फ़ अनुरोध को हैंडल करने के दौरान इस्तेमाल किए गए सीपीयू, मेमोरी, और नेटवर्किंग के लिए पैसे चुकाने होंगे.
Firebase Hosting के साथ इंटिग्रेट किए गए Cloud Run के इस्तेमाल के उदाहरण और सैंपल देखने के लिए, सर्वरलेस की खास जानकारी पर जाएं.
इस गाइड में आपको ये काम करने का तरीका बताया गया है:
- एक आसान नमस्ते ऐप्लिकेशन लिखना
- किसी ऐप्लिकेशन का कंटेनर बनाना और उसे Artifact Registry पर अपलोड करना
- कंटेनर इमेज को Cloud Run में डिप्लॉय करना
- कंटेनर में मौजूद ऐप्लिकेशन पर Hosting अनुरोधों को सीधे तौर पर भेजना
ध्यान दें कि लगातार अपडेट होने वाली जानकारी दिखाने की परफ़ॉर्मेंस को बेहतर बनाने के लिए, आपके पास कैश मेमोरी की सेटिंग को ट्यून करने का विकल्प होता है.
शुरू करने से पहले
Cloud Run का इस्तेमाल करने से पहले, आपको कुछ शुरुआती टास्क पूरे करने होंगे. इनमें Cloud Billing खाता सेट अप करना, Cloud Run एपीआई चालू करना, और gcloud कमांड लाइन टूल इंस्टॉल करना शामिल है.
अपने प्रोजेक्ट के लिए बिलिंग सेट अप करना
Cloud Run, बिना किसी शुल्क के इस्तेमाल करने का कोटा देता है. हालांकि, Cloud Run को इस्तेमाल करने या आज़माने के लिए, आपके पास अब भी आपके Firebase प्रोजेक्ट से जुड़ा Cloud Billing खाता होना चाहिए.
एपीआई चालू करना और एसडीके इंस्टॉल करना
Google API कंसोल में Cloud Run एपीआई को चालू करें:
Google API Console में Cloud Run API पेज खोलें.
जब कहा जाए, तब अपना Firebase प्रोजेक्ट चुनें.
Cloud Run एपीआई पेज पर, चालू करें पर क्लिक करें.
Cloud SDK को इंस्टॉल और शुरू करें.
देखें कि
gcloudटूल को सही प्रोजेक्ट के लिए कॉन्फ़िगर किया गया है या नहीं:gcloud config list
पहला चरण: सैंपल ऐप्लिकेशन लिखना
ध्यान दें कि 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 पर अपलोड किया जा सकता है.
Python
helloworld-pythonनाम की नई डायरेक्ट्री बनाएं. इसके बाद, डायरेक्ट्री को इसमें बदलें:mkdir helloworld-python
cd helloworld-python
app.pyनाम से एक नई फ़ाइल बनाएं. इसके बाद, यह कोड जोड़ें:यह कोड एक बुनियादी वेब सर्वर बनाता है, जो
PORTएनवायरमेंट वैरिएबल से तय किए गए पोर्ट पर सिग्नल पाने के लिए कॉन्फ़िगर किया गया है.
आपका ऐप्लिकेशन तैयार है. अब इसे कंटेनर में डालकर Artifact Registry पर अपलोड किया जा सकता है.
Java
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नाम से एक नई फ़ाइल बनाएं. इस कॉन्टेंट को अपनी फ़ाइल में कॉपी करें.जाएं
Node.js
Python
Java
Cloud Build का इस्तेमाल करके, कंटेनर इमेज बनाएं. इसके लिए, Dockerfile वाली डायरेक्ट्री में जाकर, यह कमांड चलाएं:
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जवाब दें
- कोई देश या इलाका चुनें (उदाहरण के लिए,
डिप्लॉयमेंट पूरा होने तक कुछ देर इंतज़ार करें. कमांड लाइन पर, सेवा का यूआरएल दिखता है. उदाहरण के लिए:
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
अब आपके कंटेनर को इन यूआरएल से ऐक्सेस किया जा सकता है:
आपके Firebase सबडोमेन:
PROJECT_ID.web.app/औरPROJECT_ID.firebaseapp.com/कनेक्ट किए गए सभी कस्टम डोमेन:
CUSTOM_DOMAIN/
रीराइट नियमों के बारे में ज़्यादा जानकारी के लिए, Hosting कॉन्फ़िगरेशन पेज पर जाएं. Hosting के अलग-अलग कॉन्फ़िगरेशन के लिए, जवाबों की प्राथमिकता के क्रम के बारे में भी जाना जा सकता है.
लोकल लेवल पर टेस्ट करना
डेवलपमेंट के दौरान, कंटेनर इमेज को स्थानीय तौर पर चलाया और टेस्ट किया जा सकता है. ज़्यादा जानकारी के लिए, Cloud Run दस्तावेज़ पर जाएं.
अगले चरण
ग्लोबल सीडीएन पर, लगातार अपडेट होने वाली जानकारी के लिए कैशिंग सेट अप करें.
Firebase Admin SDK का इस्तेमाल करके, Firebase की अन्य सेवाओं के साथ इंटरैक्ट करें.
Cloud Run के बारे में ज़्यादा जानें. इसमें कंटेनर सेट अप करने, मैनेज करने, और कॉन्फ़िगर करने के लिए, इस्तेमाल करने के तरीके की जानकारी देने वाली गाइड शामिल हैं.
Cloud Run के लिए, कीमत और कोटा और सीमाएं देखें.