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