तैनाती को सरल बनाने और विभिन्न वातावरणों में स्थिरता सुनिश्चित करने के लिए डॉकर के साथ अपने रस्ट अनुप्रयोगों को कंटेनरीकृत करें।
कंटेनरीकरण पोर्टेबिलिटी, अलगाव और दक्षता के संदर्भ में आवश्यक लाभ प्रदान करता है। यह विभिन्न वातावरणों में अनुप्रयोगों की लगातार तैनाती को सक्षम बनाता है और एप्लिकेशन अलगाव के माध्यम से सुरक्षा और स्थिरता सुनिश्चित करता है। यह संसाधन उपयोग को भी अनुकूलित करता है, विकास और प्रबंधन प्रक्रियाओं को सरल बनाता है और स्केलेबिलिटी को बढ़ाता है।
डॉकर के साथ रस्ट ऐप्स को कंटेनराइज़ करना अनुप्रयोगों और उनकी निर्भरताओं को स्व-निहित और पोर्टेबल वातावरण में पैकेजिंग का एक विश्वसनीय और कुशल साधन प्रदान करता है। यह अंतर्निहित बुनियादी ढांचे की चिंता किए बिना विभिन्न प्रणालियों में निर्बाध निष्पादन की अनुमति देता है।
एक्टिक्स के साथ रस्ट में एक सरल वेब सर्वर स्थापित करना
तुम कर सकते हो रस्ट में एक सरल वेब सर्वर स्थापित करें एक्टिक्स के साथ और डॉकर के साथ अपने ऐप को कंटेनरीकृत करें। आप एक पोर्ट को उजागर करेंगे जहां से आप अनुरोधों के लिए सर्वर तक पहुंच प्राप्त करेंगे।
के साथ एक नया रस्ट प्रोजेक्ट बनाने के लिए इस कमांड को चलाएँ कार्गो पैकेज मैनेजर:
कार्गो न्यू माय-ऐप
जब आप एक नया रस्ट प्रोजेक्ट बनाते हैं, तो कार्गो जोड़ता है कार्गो.टीओएमएल अपने प्रोजेक्ट की मूल निर्देशिका में फ़ाइल करें। खोलें कार्गो.टीओएमएल फ़ाइल करें और एक्टिक्स क्रेट को इसमें जोड़ें निर्भरताएँ इस प्रकार अनुभाग:
[निर्भरताएं]
एक्टिक्स-वेब = "4.3.1"
यहां बताया गया है कि आप एक्टिक्स क्रेट के साथ रस्ट में एक साधारण सर्वर कैसे सेटअप कर सकते हैं:
उपयोग actix_web::{प्राप्त करें, ऐप, HttpResponse, HttpServer, रिस्पॉन्डर};
// एक्टिक्स वेब फ्रेमवर्क से आवश्यक निर्भरताएँ आयात करें
#[पाना("/")]
asyncएफ.एननमस्ते() -> निहितार्थ उत्तरदाता {
// रूट पथ पर GET अनुरोधों के लिए एक हैंडलर फ़ंक्शन को परिभाषित करें ("/")
// फ़ंक्शन एक प्रकार लौटाता है जो रिस्पॉन्डर विशेषता को लागू करता हैHttpप्रतिक्रिया::ठीक()।शरीर("हैलो वर्ल्ड!")
// 200 (ओके) के स्टेटस कोड के साथ एक HTTP प्रतिक्रिया लौटाएं
// और "हैलो, वर्ल्ड!" का एक प्रतिक्रिया निकाय
}#[actix_web:: मुख्य]
asyncएफ.एनमुख्य() -> एसटीडी::आईओ::परिणाम {
// आवेदन का प्रवेश बिंदुHttpसर्वर:: नया(|| {
// HttpServer का एक नया उदाहरण बनाएंऐप:: नई().सेवा (हैलो)
// ऐप का एक नया इंस्टेंस बनाएं और हैलो फ़ंक्शन को पंजीकृत करें
})।बाँधना("127.0.0.1:8080")?।दौड़ना()।इंतजार
// सर्वर को आईपी पते और पोर्ट से बांधें
// सर्वर प्रारंभ करें और इसके पूरा होने की प्रतीक्षा करें
}
प्रोग्राम एक्टिक्स के साथ एक बुनियादी HTTP वेब सर्वर स्थापित करता है। नमस्ते फ़ंक्शन एक हैंडलर फ़ंक्शन है जो पोर्ट पर GET अनुरोधों का जवाब देता है 8080 "हैलो, वर्ल्ड!" के साथ।
मुख्य फ़ंक्शन के साथ एक सर्वर इंस्टेंस सेट करता है Httpसर्वर:: नया फ़ंक्शन और सर्वर को लोकलहोस्ट पते पर चलने के लिए बाध्य करता है 127.0.0.1:8080.
अब, निष्पादित करें कार्गो रन वेब सर्वर चलाने के लिए कमांड। वेब ब्राउज़र पर पता खोलने का परिणाम यहां दिया गया है।
अपने रस्ट ऐप के लिए डॉकरफाइल लिखना
डॉकर के साथ अपने रस्ट ऐप को कंटेनरीकृत करने के लिए, आपको एक बनाना होगा Dockerfile और कंटेनरीकरण प्रक्रिया के लिए आदेशों को परिभाषित करें।
Dockerfile कोई विस्तार नहीं है; आपको केवल एक बनाने की आवश्यकता है Dockerfile फ़ाइल। आप भी बना सकते हैं .dockerignore अपनी निर्माण प्रक्रिया से अपनी कार्यशील निर्देशिका में फ़ाइलों को अमूर्त करने के लिए फ़ाइल।
आपके Dockerfile में कमांड परिभाषित करना
आपका Dockerfile इसमें ऐसे कमांड होंगे जो डॉकर रिपॉजिटरी से बेस इमेज खींचेंगे, वर्किंग डायरेक्टरी सेट करेंगे, कॉपी करेंगे फ़ाइलें, निर्भरताएँ बनाएँ, एप्लिकेशन बनाएँ, न्यूनतम छवि बनाएँ, पोर्ट निर्यात करें, और चलाएँ आवेदन पत्र।
# रस्ट बेस छवि के नवीनतम संस्करण का उपयोग करें
से जंग: नवीनतम# कंटेनर में कार्यशील निर्देशिका को /my पर सेट करें
वर्कडिर /usr/src/my-app# रस्ट प्रोजेक्ट फ़ाइलों को कार्यशील निर्देशिका में कॉपी करें
कॉपी. .# रस्ट ऐप बनाएं
दौड़ना कार्गो निर्माण
# रस्ट ऐप चलाने के लिए कमांड सेट करें
अध्यक्ष एवं प्रबंध निदेशक कार्गो रन
अपने ऐप को कंटेनरीकृत करने के लिए आवश्यक कमांड को परिभाषित करने के बाद, आप इस कमांड के साथ एक कंटेनर बना सकते हैं:
डॉकर बिल्ड-टी माय-ऐप।
कमांड आपके लिए एक डॉकर छवि बनाता है मेरे-ऐप टैग के साथ ऐप मेरे-ऐप वर्तमान निर्देशिका से.
आप इसका उपयोग कर सकते हैं डॉकर रन अपनी डॉकर छवि को चलाने के लिए आदेश दें।
डॉकर रन -पी 8080:8080 माय-ऐप
-पी 8080:8080 विकल्प होस्ट मशीन के पोर्ट 8080 को कंटेनर के पोर्ट 8080 से मैप करता है। डॉकर होस्ट मशीन पर पोर्ट 8080 पर निर्देशित ट्रैफ़िक को कंटेनर में पोर्ट 8080 पर अग्रेषित करेगा।
आप वेब सर्वर को कॉल करने के लिए लोकलहोस्ट पोर्ट 8080 के माध्यम से कंटेनर को अनुरोध भेज सकते हैं।
डॉकर कंपोज़ मल्टी-कंटेनर ऑर्केस्ट्रेशन को सक्षम बनाता है
परिष्कृत डॉकर एप्लिकेशन बनाते समय कई कंटेनरों के साथ काम करना एक प्रचलित कार्य है। आप कई डॉकर कंटेनरों के साथ काम करने के लिए डॉकर कंपोज़ का उपयोग कर सकते हैं।
डॉकर कंपोज़ आपके ऐप को बनाने वाली सेवाओं को परिभाषित करने, सेवाओं के बीच निर्भरता निर्दिष्ट करने के लिए कार्यक्षमता प्रदान करता है। प्रत्येक सेवा के लिए पर्यावरण चर को परिभाषित करना, प्रारंभ करना, रोकना, पुनरारंभ करना, आपके एप्लिकेशन के कंटेनरों को स्केल करना, और अन्य कार्यक्षमताएँ