पाठ 24 / 26
Publish और Docker
Release build publish करें और multi-stage Dockerfile से उसे पैक करें।
एक बार build, कहीं भी चलाएँ
dotnet publish -c Release deploy करने वाली files बनाता है। Multi-stage Dockerfile बड़ी SDK image से build करता है और सिर्फ़ output को छोटी ASP.NET runtime image में कॉपी करता है, जिससे अंतिम image छोटी रहती है और build tools से मुक्त।
लैपटॉप से production तक
आप build publish करते हैं, उसे container में पैक करते हैं, कहीं चलाते हैं, और उस पर नज़र रखते हैं।
Multi-stage Dockerfile
Shop.Api की जगह अपने project का नाम लिखें। हाल की .NET images non-root user से चलती हैं और port 8080 पर सुनती हैं।
FROM mcr.microsoft.com/dotnet/sdk:10.0 AS build
WORKDIR /src
COPY . .
RUN dotnet publish src/Shop.Api -c Release -o /app
FROM mcr.microsoft.com/dotnet/aspnet:10.0
WORKDIR /app
COPY --from=build /app .
EXPOSE 8080
ENTRYPOINT ["dotnet", "Shop.Api.dll"].dockerignore जोड़ें
Build context से bin/, obj/, .git/ और local secrets बाहर रखें। इससे build तेज़ होता है और गलती से secret image layer में चला जाने से बचाव होता है।
त्वरित जाँच: Multi-stage Dockerfile क्यों उपयोग करें?
- अंतिम image में सिर्फ़ चलाने के लिए ज़रूरी चीज़ें होती हैं
- इससे C# तेज़ चलता है
- Docker में ठीक दो stages ज़रूरी हैं
- इससे publish की ज़रूरत ख़त्म हो जाती है
Answer
अंतिम image में सिर्फ़ चलाने के लिए ज़रूरी चीज़ें होती हैं — SDK build stage में रहता है; सिर्फ़ compile किया output छोटी runtime image में जाता है।