Docker और C#: .NET अनुप्रयोगों का कंटेनरीकरण शुरू से

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

Docker और C#: .NET अनुप्रयोगों का कंटेनरीकरण



आधुनिक सॉफ्टवेयर विकास में, अनुप्रयोगों के निर्माण, परीक्षण और परिनियोजन के लिए कंटेनरीकरण एक डी-फैक्टो मानक बन गया है। Docker आपको आपके C# एप्लिकेशन को उसकी सभी निर्भरताओं के साथ एक पृथक वातावरण - कंटेनर में पैकेज करने की अनुमति देता है। यह सुनिश्चित करता है कि एप्लिकेशन किसी भी मशीन पर समान रूप से काम करेगा: डेवलपर के लैपटॉप से लेकर क्लाउड में production-सर्वर तक।



इस लेख में, हम विस्तार से जानेंगे कि Docker का उपयोग करके .NET अनुप्रयोगों को कैसे कंटेनरीकृत किया जाए। आप सीखेंगे कि कुशल Dockerfile कैसे बनाएं, मल्टी-स्टेज बिल्ड का उपयोग कैसे करें, मल्टी-कंटेनर अनुप्रयोगों के लिए docker-compose के साथ कैसे काम करें और सर्वोत्तम प्रथाओं का पालन कैसे करें।



Docker क्या है और C# डेवलपर को इसकी आवश्यकता क्यों है?



Docker कंटेनरों में अनुप्रयोगों के विकास, वितरण और चलाने के लिए एक प्लेटफॉर्म है। कंटेनर एक हल्का, स्व-निहित, निष्पादन योग्य पैकेज है जिसमें एप्लिकेशन को चलाने के लिए आवश्यक सब कुछ शामिल होता है: कोड, रनटाइम वातावरण, सिस्टम टूल्स, लाइब्रेरी और सेटिंग्स।



C# डेवलपर के लिए, Docker निम्नलिखित लाभ प्रदान करता है:

  • वातावरण का पृथक्करण — अब प्रत्येक मशीन पर वातावरण सेट करने की आवश्यकता नहीं है। सभी निर्भरताएँ इमेज में तय हो जाती हैं।
  • एकीकरण — एप्लिकेशन Windows, Linux और macOS पर समान रूप से काम करता है।
  • स्केलेबिलिटी — लोड को संभालने के लिए एप्लिकेशन के कई इंस्टेंस आसानी से चलाए जा सकते हैं।
  • CI/CD एकीकरण — कंटेनर स्वचालित बिल्ड और परिनियोजन पाइपलाइनों के लिए आदर्श हैं।
  • माइक्रोसर्विस आर्किटेक्चर — प्रत्येक सेवा को एक अलग कंटेनर में पैकेज किया जा सकता है।


यह ध्यान रखना महत्वपूर्ण है कि .NET Core (और नए .NET 5/6/7/8) क्रॉस-प्लेटफ़ॉर्म हैं और Linux कंटेनरों में बहुत अच्छी तरह से काम करते हैं, जो Docker के लिए मानक हैं। .NET Framework अनुप्रयोगों को Windows कंटेनरों की आवश्यकता होती है, जो कुछ सीमाएँ लगाते हैं।



.NET एप्लिकेशन के लिए Dockerfile बनाना



कंटेनरीकरण के लिए मुख्य आर्टिफैक्ट Dockerfile फ़ाइल है। इसमें आपके एप्लिकेशन की इमेज बनाने के निर्देश होते हैं। आइए एक विशिष्ट ASP.NET Core Web API के लिए एक उदाहरण देखें।



अपने प्रोजेक्ट की रूट में Dockerfile नामक फ़ाइल बनाएँ:



# चरण 1: एप्लिकेशन बनानाFROM mcr.microsoft.com/dotnet/sdk:8.0 AS buildWORKDIR /src

# प्रोजेक्ट फ़ाइल कॉपी करें और निर्भरताएँ पुनर्स्थापित करेंCOPY ["MyApp/MyApp.csproj", "MyApp/"]RUN dotnet restore "MyApp/MyApp.csproj"

# सभी स्रोत कोड कॉपी करें और एप्लिकेशन बनाएँCOPY . .WORKDIR "/src/MyApp"RUN dotnet build "MyApp.csproj" -c Release -o /app/build

# चरण 2: एप्लिकेशन प्रकाशित करनाFROM build AS publishRUN dotnet publish "MyApp.csproj" -c Release -o /app/publish /p:UseAppHost=false

# चरण 3: चलाने के लिए अंतिम इमेजFROM mcr.microsoft.com/dotnet/aspnet:8.0 AS finalWORKDIR /appEXPOSE 80EXPOSE 443

# publish चरण से प्रकाशित फ़ाइलें कॉपी करेंCOPY --from=publish /app/publish .

# सुरक्षा के लिए रूट अधिकारों के बिना उपयोगकर्ता सेट करेंUSER app

ENTRYPOINT ["dotnet", "MyApp.dll"]


निर्देशों का विश्लेषण:

  • FROM ... AS build — बिल्ड के लिए SDK इमेज का उपयोग करें। यह "निर्माण" चरण है।
  • WORKDIR — कार्यशील निर्देशिका सेट करता है।
  • COPY — होस्ट सिस्टम से इमेज में फ़ाइलें कॉपी करता है।
  • RUN dotnet restore — NuGet पैकेज पुनर्स्थापित करता है।
  • RUN dotnet build — प्रोजेक्ट संकलित करता है।
  • FROM ... AS publish — प्रकाशन के लिए दूसरा चरण (अक्सर build के साथ संयुक्त)।
  • FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS final — अंतिम इमेज, जिसमें केवल ASP.NET Core रनटाइम है। यह SDK इमेज से बहुत हल्की होती है।
  • COPY --from=

ब्लॉग

पुस्तक अनुशंसाएँ