DevOps बूटकैंप · पाठ

दक्षता के लिए बहु-चरणीय बिल्ड

बिल्ड और रनटाइम निर्भरताओं को अलग करके छोटी और अधिक सुरक्षित उत्पादन इमेज बनाने के लिए बहु-चरणीय बिल्ड का उपयोग करें।

पाठ 1, कुल 4 में से12 चरण

दक्षता के लिए बहु-चरणीय बिल्ड, CoddyKit पर DevOps बूटकैंप का एक निःशुल्क पाठ है। यह 4 में से 1वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह DevOps बूटकैंप सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। DevOps बूटकैंप पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

बहु-चरणीय निर्माण का परिचय

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

छोटी इमेज तेज़ डाउनलोड, बेहतर सुरक्षा और संसाधनों के बेहतर उपयोग में सहायक होती हैं।

दक्षता के लिए बहु-चरणीय बिल्ड — चित्र 1

छोटी इमेज क्यों महत्वपूर्ण हैं

Docker इमेज बनाते समय उसमें अक्सर ऐसे उपकरण और निर्भरताएँ शामिल हो जाती हैं जिनकी आवश्यकता केवल निर्माण प्रक्रिया के दौरान होती है, अंतिम अनुप्रयोग चलाने के समय नहीं।

  • तेज़ प्राप्ति: छोटी इमेज जल्दी डाउनलोड होती हैं।
  • कम डिस्क स्थान: रजिस्ट्री और होस्ट पर संग्रहण की बचत होती है।
  • कम आक्रमण सतह: कम घटकों का अर्थ है संभावित कमज़ोरियों की संख्या भी कम।
  • बेहतर सुरक्षा: आपकी उत्पादन इमेज में केवल आवश्यक चीज़ें होती हैं।

एकल-चरणीय समस्या

किसी संकलित अनुप्रयोग पर विचार करें, जैसे Go में लिखा गया अनुप्रयोग। पारंपरिक, एकल-चरणीय Dockerfile में पूरा Go कंपाइलर और विकास संबंधी निर्भरताएँ अंतिम इमेज में शामिल हो जाती हैं।

इससे अंतिम इमेज आवश्यकता से बहुत बड़ी हो जाती है, क्योंकि संकलित बाइनरी को चलाने के लिए कंपाइलर की आवश्यकता नहीं होती।

एकल-चरणीय उदाहरण (Go)

यहाँ एक सरल Go अनुप्रयोग और उसे एक ही चरण में बनाने वाला Dockerfile है। ध्यान दें कि निर्माण वातावरण अंतिम इमेज में शामिल है।

main.go:

package main

import "fmt"

func main() {
    fmt.Println("Hello from Single-Stage Docker!")
}

एकल-चरणीय Dockerfile

यह Dockerfile अपने आधार के रूप में `golang:1.21-alpine` का उपयोग करता है। अनुप्रयोग बनाने के बाद यह बड़ी आधार इमेज और उसके सभी निर्माण उपकरण अंतिम इमेज में बने रहते हैं।

FROM golang:1.21-alpine
WORKDIR /app
COPY main.go .
RUN go build -o myapp main.go
EXPOSE 8080
CMD ["./myapp"]

बहु-चरणीय निर्माण की संरचना

बहु-चरणीय निर्माण आपको एक ही Dockerfile में कई `FROM` निर्देश परिभाषित करने की सुविधा देकर इस समस्या का समाधान करते हैं। प्रत्येक `FROM` एक नया निर्माण चरण शुरू करता है।

  • किसी चरण का नाम देने के लिए AS कीवर्ड का उपयोग करें, जैसे FROM golang:1.21-alpine AS builder।
  • इसके बाद COPY --from=<stage_name> का उपयोग करके पिछले चरण से कलाकृतियाँ कॉपी कर सकते हैं।

केवल अंतिम चरण को इमेज के रूप में सहेजा जाता है।

बहु-चरणीय संरचना

एक सामान्य बहु-चरणीय Dockerfile में कम से कम दो चरण होते हैं:

  • निर्माण चरण: इसमें आपके अनुप्रयोग को संकलित करने के लिए आवश्यक सभी उपकरण और स्रोत कोड होते हैं।
  • रनटाइम चरण: एक न्यूनतम आधार इमेज जिसमें केवल संकलित अनुप्रयोग और उसकी रनटाइम निर्भरताएँ होती हैं।

निर्माण चरण की मध्यवर्ती इमेज हटा दी जाती है, जिससे एक हल्की अंतिम इमेज बचती है।

बहु-चरणीय उदाहरण (Go)

आइए, अपने Go अनुप्रयोग के Dockerfile को बहु-चरणीय तरीके से फिर से लिखें। हम पहले चरण में अनुप्रयोग बनाएँगे और फिर केवल संकलित बाइनरी को बहुत छोटी `alpine` आधार इमेज में कॉपी करेंगे।

# Stage 1: Build the application
FROM golang:1.21-alpine AS builder
WORKDIR /app
COPY main.go .
RUN go build -o myapp main.go

# Stage 2: Create the final lightweight image
FROM alpine:latest
WORKDIR /app
COPY --from=builder /app/myapp .
EXPOSE 8080
CMD ["./myapp"]

बहु-चरणीय निर्माण चलाना

जब आप यह Dockerfile बनाते हैं, तो Docker प्रत्येक चरण को निष्पादित करता है। हालाँकि, केवल अंतिम `FROM` निर्देश की सामग्री और पिछले चरणों से कॉपी की गई फ़ाइलें मिलकर अंतिम इमेज बनाती हैं।

इससे एकल-चरणीय निर्माण की तुलना में इमेज काफी छोटी हो जाती है, क्योंकि Go कंपाइलर और निर्माण उपकरण पीछे छूट जाते हैं।

बहु-चरणीय निर्माण के लाभ

बहु-चरणीय निर्माण इन कार्यों के लिए बेहद उपयोगी हैं:

  • संकलित भाषाएँ: Go, Java, C++, Rust।
  • फ़्रंटएंड फ़्रेमवर्क: React/Angular अनुप्रयोग बनाना और Nginx से स्थिर संसाधन उपलब्ध कराना।
  • Node.js अनुप्रयोग: निर्माण चरण में `node_modules` इंस्टॉल करना, फिर केवल `package.json`, `package-lock.json` और बनाए गए अनुप्रयोग को हल्की रनटाइम इमेज में कॉपी करना।

अपने ज्ञान की जाँच करें

निम्नलिखित में से बहु-चरणीय Docker निर्माण का मुख्य लाभ कौन-सा है?

पुनरावलोकन: बहु-चरणीय दक्षता

आपने बहु-चरणीय Docker निर्माण के बारे में सीख लिया है!

  • इनमें एक ही Dockerfile में कई FROM निर्देश शामिल होते हैं।
  • AS कीवर्ड चरणों को नाम देता है और COPY --from= कलाकृतियों को स्थानांतरित करता है।
  • मुख्य लाभ बहुत छोटी, अधिक सुरक्षित और दक्ष अंतिम इमेज हैं।

कंटेनरीकृत अनुप्रयोगों को अनुकूलित करने के लिए यह तकनीक बहुत महत्वपूर्ण है। अब हम निर्माण कैश का लाभ उठाने का तरीका देखेंगे!

शुरुआत निःशुल्क

एआई शिक्षक के साथ DevOps बूटकैंप सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
142
पाठ
568

अक्सर पूछे जाने वाले प्रश्न

क्या “दक्षता के लिए बहु-चरणीय बिल्ड” पाठ निःशुल्क है?

हाँ — DevOps बूटकैंप अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “दक्षता के लिए बहु-चरणीय बिल्ड” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। DevOps बूटकैंप पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“दक्षता के लिए बहु-चरणीय बिल्ड” में मैं क्या सीखूँगा?

बिल्ड और रनटाइम निर्भरताओं को अलग करके छोटी और अधिक सुरक्षित उत्पादन इमेज बनाने के लिए बहु-चरणीय बिल्ड का उपयोग करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ DevOps बूटकैंप का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या DevOps बूटकैंप शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर DevOps बूटकैंप शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 1वाँ पाठ है।

“दक्षता के लिए बहु-चरणीय बिल्ड” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस DevOps बूटकैंप पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर DevOps बूटकैंप पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. दक्षता के लिए बहु-चरणीय बिल्ड
  2. बिल्ड कैशिंग का उपयोग
  3. Dockerfile सुरक्षा की सर्वोत्तम प्रक्रियाएँ
  4. Slim और Distroless बेस से इमेज आकार घटाना
← DevOps बूटकैंप पर वापस जाएँ