डाइनैमिक कॉन्टेंट जनरेट करने और उसे दिखाने के लिए, Cloud Run को Firebase Hosting से जोड़ें. इसके अलावा, माइक्रोसेवाओं के तौर पर REST एपीआई बनाएं.
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
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 का इस्तेमाल करके, अपनी कंटेनर इमेज बनाएं. इसके लिए, Dockerfile वाली डायरेक्ट्री से यह कमांड चलाएं:Cloud Build
gcloud builds submit --tag gcr.io/PROJECT_ID/helloworld
सक्सेस होने पर, आपको एक SUCCESS मैसेज दिखेगा. इसमें इमेज का नाम
(gcr.io/PROJECT_ID/helloworld) होगा.
कंटेनर इमेज अब Artifact Registry में सेव हो गई है. अगर चाहें, तो इसे फिर से इस्तेमाल किया जा सकता है.
तीसरा चरण: कंटेनर इमेज को Cloud Run पर डिप्लॉय करना
डिप्लॉय करने के लिए, यह कमांड इस्तेमाल करें:
gcloud run deploy --image gcr.io/PROJECT_ID/helloworld
प्रॉम्प्ट मिलने पर:
- कोई देश/इलाका चुनें. जैसे,
us-central1 - सेवा के नाम की पुष्टि करें. जैसे,
helloworld - बिना पुष्टि किए कॉल करने की अनुमति दें के लिए,
Yजवाब दें
- कोई देश/इलाका चुनें. जैसे,
डिप्लॉय होने में कुछ समय लगेगा. सक्सेस होने पर, कमांड लाइन पर सेवा का यूआरएल दिखता है. उदाहरण के लिए:
https://helloworld-RANDOM_HASH-us-central1.a.run.app किसी वेब ब्राउज़र में सेवा का यूआरएल खोलकर, डिप्लॉय किए गए कंटेनर पर जाएं.
अगले चरण में, आपको URL से कंटेनर वाले इस ऐप्लिकेशन को ऐक्सेस करने का तरीका बताया जाएगा, ताकि यह Firebase पर होस्ट की गई आपकी साइट के लिए डाइनैमिक कॉन्टेंट जनरेट कर सके.Firebase Hosting
चौथा चरण: होस्टिंग के अनुरोधों को कंटेनर वाले ऐप्लिकेशन पर डायरेक्ट करना
यहां दिए गए उदाहरण में, आपकी Hosting साइट पर पेज
/helloworld से आने वाले सभी अनुरोधों को,
आपके helloworld कंटेनर इंस्टेंस को शुरू करने और चलाने के लिए डायरेक्ट करने का तरीका बताया गया है.
पक्का करें कि:
आपके पास CLI का नया वर्शन हो.Firebase
आपने 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.