अपने डाइनैमिक कॉन्टेंट को जनरेट और डिलीवर करने के लिए, 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 Run खाता सेट अप करना, Cloud Run एपीआई चालू करना, और gcloud
कमांड लाइन टूल इंस्टॉल करना.Cloud Billing
अपने प्रोजेक्ट के लिए बिलिंग सेट अप करना
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.zip
unzip 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 CLI का नया वर्शन होना चाहिए.
आपने 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 के लिए, कीमत और कोटा और सीमाएं देखें.