अपने डाइनैमिक कॉन्टेंट को जनरेट और डिलीवर करने के लिए, Cloud Run को Firebase Hosting के साथ जोड़ें. इसके अलावा, माइक्रोसेवाओं के तौर पर REST API बनाएं.
Cloud Run का इस्तेमाल करके, कंटेनर इमेज में पैकेज किए गए ऐप्लिकेशन को डिप्लॉय किया जा सकता है. इसके बाद, Firebase Hosting का इस्तेमाल करके, एचटीटीपीएस अनुरोधों को कंटेनर वाले ऐप्लिकेशन को ट्रिगर करने के लिए भेजा जा सकता है.
- Cloud Run कई भाषाओं के साथ काम करता है. इनमें Go, Node.js, Python, और Java शामिल हैं. इससे आपको अपनी पसंद की प्रोग्रामिंग लैंग्वेज और फ़्रेमवर्क का इस्तेमाल करने की सुविधा मिलती है.
- Cloud Run अपने-आप और हॉरिज़ॉन्टल तरीके से स्केल होती है. इससे मिले अनुरोधों को मैनेज करने के लिए, आपकी कंटेनर इमेज का साइज़ बढ़ता है. इसके बाद, मांग कम होने पर इसका साइज़ कम हो जाता है.
- अनुरोध को प्रोसेस करने के दौरान इस्तेमाल किए गए सीपीयू, मेमोरी, और नेटवर्किंग के लिए ही पेमेंट करना होता है.
Firebase Hosting के साथ इंटिग्रेट किए गए Cloud Run के इस्तेमाल के उदाहरण और सैंपल देखने के लिए, सर्वरलेस की खास जानकारी पर जाएं.
इस गाइड में, आपको इन कामों के बारे में जानकारी मिलेगी:
- 'Hello World' ऐप्लिकेशन का आसान कोड लिखना
- ऐप्लिकेशन को कंटेनर में रखना और उसे 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 कंसोल में, 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 पर अपलोड किया जा सकता है.
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 प्रोजेक्ट बनता है.
SpringBootApplicationक्लास कोsrc/main/java/com/example/helloworld/HelloworldApplication.javaमें अपडेट करें. इसके लिए,/मैपिंग को मैनेज करने के लिए@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 के लिए, कीमत और कोटा और सीमाएं देखें.