हल्की Dockerfile और Shell एंट्रीपॉइंट लिखना
सिग्नल हैंडलिंग और कॉन्फ़िगरेशन टेम्पलेटिंग के साथ बहु-चरणीय बिल्ड स्क्रिप्ट और मज़बूत एंट्रीपॉइंट शिम लिखें।
हल्की Dockerfile और Shell एंट्रीपॉइंट लिखना, CoddyKit पर Linux कमांड लाइन और Bash स्क्रिप्टिंग में महारत का एक निःशुल्क पाठ है। यह 4 में से 1वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Linux कमांड लाइन और Bash स्क्रिप्टिंग में महारत सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Linux कमांड लाइन और Bash स्क्रिप्टिंग में महारत पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
DevOps के लिए हल्की डॉकरफ़ाइल क्यों महत्वपूर्ण हैं
उत्पादन परिवेशों में, डॉकर इमेज का हर मेगाबाइट एक कीमत रखता है: धीमे डाउनलोड, बड़ा हमले का क्षेत्र और रजिस्ट्री में व्यर्थ भंडारण। सुदृढ़ शेल एंट्रीपॉइंट के साथ हल्की डॉकरफ़ाइलें परिपक्व DevOps अभ्यास की पहचान हैं।
- बहु-चरणीय बिल्ड निर्माण-समय के औज़ारों को अंतिम रनटाइम इमेज से अलग करते हैं, जिससे आकार बहुत कम हो जाता है।
- एंट्रीपॉइंट शिम छोटी शेल स्क्रिप्टें होती हैं जो कंटेनरों को आरंभ करती हैं: वे कॉन्फ़िगरेशन फ़ाइलों के लिए टेम्पलेट तैयार करती हैं, परिवेश चरों को मान्य करती हैं, सिग्नल संभालती हैं और अंत में मुख्य प्रक्रिया को नियंत्रण सौंपती हैं।
- मिलकर ये कुबेरनेट्स, ECS और प्रत्यक्ष हार्डवेयर परिवेशों में विश्वसनीय, पोर्टेबल कंटेनर कार्यभार की रीढ़ बनती हैं।
इस पाठ में दोनों विधाओं को शुरू से अंत तक शामिल किया गया है, जिसमें उत्पादन-स्तरीय ऐसे प्रतिरूप हैं जिन्हें आप सीधे अपनी निर्माण-श्रृंखलाओं में अपना सकते हैं।
बहु-चरणीय डॉकरफ़ाइल की संरचना
बहु-चरणीय डॉकरफ़ाइल में कई FROM निर्देश होते हैं। प्रत्येक चरण परतों का एक पृथक समूह होता है; आप अगले चरण में केवल वही निर्माण-उत्पाद कॉपी करते हैं जिनकी आपको आवश्यकता होती है।
- चरण 0 (निर्माता): संकलक, परीक्षण चलाने वाले और निर्माण-निर्भरता स्थापित करता है।
- चरण 1 (रनटाइम): न्यूनतम आधार (जैसे
alpine,distroless) से शुरू होता है और केवल संकलित बाइनरी या ऐप पैकेज कॉपी करता है। - अंतिम इमेज में
gcc,makeया स्रोत कोड कभी नहीं होता, जब तक कि आप उन्हें स्पष्ट रूप से कॉपी न करें।
चरण सीमाओं के पार फ़ाइलें लाने के लिए COPY में --from=<stage> का उपयोग करें। पठनीयता और docker build --target के साथ चुने हुए लक्ष्य के लिए चरणों को AS <name> से नाम दें।
# ---- Stage 0: builder ----
FROM golang:1.22-alpine AS builder
WORKDIR /src
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 GOOS=linux go build -trimpath -ldflags='-s -w' -o /app/server ./cmd/server
# ---- Stage 1: runtime ----
FROM gcr.io/distroless/static-debian12
COPY --from=builder /app/server /server
ENTRYPOINT ["/server"]परतों को न्यूनतम करना और कैश को अमान्य करना
प्रत्येक RUN, COPY और ADD निर्देश एक नई परत बनाता है। गलत क्रम में रखे गए निर्देश निर्माण कैश को अनावश्यक रूप से अमान्य कर देते हैं, जिससे सीआई निर्माण-श्रृंखलाएँ धीमी हो जाती हैं।
- निर्भरता की सूची वाली फ़ाइलें (
package.json,go.mod,requirements.txt) स्रोत कोड कॉपी करने से पहले कॉपी करें, ताकि निर्भरता स्थापना का कैश स्वतंत्र रूप से बना रहे। - संबंधित आदेशों को
&&से जोड़ें और पैकेज कैश को मध्यवर्ती परतों में छोड़ने से बचने के लिए उसीRUNपरत में सफ़ाई करें। - पैकेज प्रबंधकों में
--no-cacheका उपयोग करें और स्थापना के बाद सूची वाली फ़ाइलें हटा दें।
FROM python:3.12-slim AS builder
WORKDIR /app
# 1. Install deps first (cached until requirements change)
COPY requirements.txt .
RUN pip install --no-cache-dir --prefix=/install -r requirements.txt
# 2. Copy source (cache busted only when code changes)
COPY src/ ./src/
FROM python:3.12-slim
COPY --from=builder /install /usr/local
COPY --from=builder /app/src /app/src
WORKDIR /app
CMD ["python", "-m", "src.main"]BuildKit सीक्रेट और SSH अग्रेषण
निजी रजिस्ट्रियाँ, SSH कुंजियाँ और एपीआई टोकन इमेज की परतों में कभी नहीं आने चाहिए। डॉकर BuildKit दो सुरक्षित तरीके उपलब्ध कराता है:
--secret: एकलRUNचरण के भीतर एक सीक्रेट फ़ाइल माउंट करता है, बिना उसे परत में स्थायी रूप से शामिल किए। इसे/run/secrets/<id>के माध्यम से पाएँ।--ssh: होस्ट के SSH एजेंट सॉकेट को निर्माण प्रक्रिया में अग्रेषित करता है, ताकिgit cloneनिजी कुंजियों को शामिल किए बिना प्रमाणीकरण कर सके।
BuildKit को DOCKER_BUILDKIT=1 से या docker buildx build के माध्यम से सक्षम करें। # syntax=docker/dockerfile:1 निर्देश इन सुविधाओं को उपलब्ध कराता है।
# syntax=docker/dockerfile:1
FROM node:20-alpine AS deps
WORKDIR /app
COPY package*.json ./
# Mount NPM token as a secret — never stored in the image
RUN --mount=type=secret,id=npm_token \
NPM_TOKEN=$(cat /run/secrets/npm_token) \
npm ci --prefer-offline
# Usage at build time:
# DOCKER_BUILDKIT=1 docker build \
# --secret id=npm_token,src=~/.npmrc-token \
# -t myapp:latest .सुदृढ़ एंट्रीपॉइंट शिम लिखना
एंट्रीपॉइंट शिम एक शेल स्क्रिप्ट है जिसे डॉकरफ़ाइल में ENTRYPOINT के रूप में सेट किया जाता है। इसका काम मुख्य प्रक्रिया को नियंत्रण सौंपने से पहले रनटाइम परिवेश तैयार करना है।
एक सुव्यवस्थित शिम इस क्रम का पालन करता है:
- चरण 1:
set -euo pipefailसेट करें, ताकि कोई भी विफलता तुरंत प्रक्रिया रोक दे। - चरण 2: आवश्यक परिवेश चरों को मान्य करें और उपयोगी संदेश के साथ तुरंत विफल हों।
- चरण 3: परिवेश चरों से कॉन्फ़िगरेशन फ़ाइलों के टेम्पलेट तैयार करें।
- चरण 4: सहज बंदी के लिए सिग्नल हैंडलर पंजीकृत करें।
- चरण 5:
exec "$@"— शेल को मुख्य प्रक्रिया से बदल दें, ताकि PID 1 शिम के बजाय ऐप्लिकेशन हो।
अंतिम exec अत्यंत महत्वपूर्ण है: इसके बिना कुबेरनेट्स या डॉकर रनटाइम द्वारा भेजे गए सिग्नल बाल प्रक्रिया तक अग्रेषित नहीं किए जाते।
#!/usr/bin/env bash
set -euo pipefail
# Step 2: validate required env vars
REQUIRED_VARS=(DATABASE_URL APP_SECRET PORT)
for var in "${REQUIRED_VARS[@]}"; do
if [[ -z "${!var:-}" ]]; then
echo "[entrypoint] ERROR: required env var '$var' is not set" >&2
exit 1
fi
done
# Step 3: template config (see next scene)
# Step 4: signal handling (see scene after that)
# Step 5: hand off to CMD
exec "$@"envsubst के साथ कॉन्फ़िगरेशन टेम्पलेट बनाना
envsubst (GNU gettext पैकेज से आने वाली उपयोगिता, जो अल्पाइन में gettext के रूप में उपलब्ध है) किसी टेम्पलेट फ़ाइल में मौजूद ${VAR} प्लेसहोल्डर को उनके वर्तमान परिवेश चर मानों से बदलती है।
- इमेज में
*.tmplकॉन्फ़िगरेशन टेम्पलेट रखें; एंट्रीपॉइंट आरंभ होने पर उसका अंतिम रूप तैयार करता है। envsubstको चरों की सूची स्पष्ट रूप से दें, ताकि वह अनजाने में असंबंधित डॉलर चिह्नों (जैसे एनजिनएक्स रेगेक्स में) का विस्तार न कर दे।- अंतिम रूप दी गई फ़ाइल को
/tmpजैसे लिखने योग्य पथ या किसी समर्पित कॉन्फ़िगरेशन वॉल्यूम में लिखें।
#!/usr/bin/env bash
# Template: /etc/nginx/conf.d/app.conf.tmpl contains:
# server { listen ${NGINX_PORT}; server_name ${SERVER_NAME}; ... }
export NGINX_PORT=${NGINX_PORT:-8080}
export SERVER_NAME=${SERVER_NAME:-localhost}
envsubst '${NGINX_PORT} ${SERVER_NAME}' \
< /etc/nginx/conf.d/app.conf.tmpl \
> /etc/nginx/conf.d/app.conf
echo "[entrypoint] nginx config rendered:"
grep -E 'listen|server_name' /etc/nginx/conf.d/app.conf
exec "$@"सिग्नल प्रबंधन और सहज बंदी
कुबेरनेट्स, ECS या docker stop द्वारा रोके जाने पर कंटेनरों को SIGTERM मिलता है। यदि आपका एंट्रीपॉइंट शिम PID 1 है और सिग्नल अग्रेषित नहीं करता, तो शांति अवधि के बाद मुख्य प्रक्रिया को SIGKILL से समाप्त कर दिया जाता है — इससे अनुरोध छूट सकते हैं या डेटा खराब हो सकता है।
- शिम में
trapका उपयोग करकेSIGTERMऔरSIGINTपकड़ें। kill -TERM "$child"का उपयोग करके सिग्नल बाल PID तक अग्रेषित करें।- बाल प्रक्रिया के बाहर निकलने तक रुकने के लिए
wait "$child"का उपयोग करें, फिर उसका निकास कोड आगे भेजें। - वैकल्पिक रूप से, शेल को पूरी तरह बदलने के लिए
execका उपयोग करें — तब ऑपरेटिंग सिस्टम सिग्नल सीधे बाल प्रक्रिया तक पहुँचाता है और किसीtrapकी आवश्यकता नहीं होती। सरल मामलों के लिए यही पसंदीदा प्रतिरूप है।
#!/usr/bin/env bash
set -euo pipefail
# Start main process in background
"$@" &
child=$!
# Forward SIGTERM and SIGINT to the child
trap 'echo "[entrypoint] caught SIGTERM, forwarding..."; kill -TERM "$child"' TERM
trap 'echo "[entrypoint] caught SIGINT, forwarding..."; kill -INT "$child"' INT
# Wait for child to exit and capture its exit code
wait "$child"
exit $?न्यूनतम आरंभिक प्रक्रिया के रूप में tini का उपयोग
जब आपका कंटेनर बाल प्रक्रियाएँ शुरू करता है (जैसे, कोई शेल जो कार्यकर्ताओं की प्रतिलिपियाँ बनाता है), तो जॉम्बी प्रक्रियाओं को साफ़ करने के लिए आपको वास्तविक आरंभिक प्रक्रिया की आवश्यकता होती है। tini कंटेनरों के लिए विशेष रूप से बनाया गया एक बहुत छोटा आरंभिक बाइनरी है।
- अपनी इमेज में
tiniजोड़ें और उसे एंट्रीपॉइंट आवरण के रूप में सेट करें। - यह जॉम्बी बाल प्रक्रियाओं को साफ़ करता है, सिग्नल सही ढंग से अग्रेषित करता है और बाल प्रक्रिया के स्थिति कोड के साथ बाहर निकलता है।
- डॉकर में
docker run --initसे सक्रिय होने वाली अंतर्निहित tini उपलब्ध है, लेकिन इसे इमेज में शामिल करने से अलग-अलग रनटाइम (कुबेरनेट्स, ECS आदि) में व्यवहार एकसमान रहता है।
FROM node:20-alpine
# Install tini for proper signal handling and zombie reaping
RUN apk add --no-cache tini
WORKDIR /app
COPY --chown=node:node . .
RUN npm ci --omit=dev
USER node
# tini wraps CMD; forwards SIGTERM and reaps zombies
ENTRYPOINT ["/sbin/tini", "--"]
CMD ["node", "server.js"]गैर-रूट उपयोगकर्ता के रूप में चलाना
root (UID 0) के रूप में चलने वाले कंटेनर एक बड़ा सुरक्षा जोखिम हैं: कंटेनर से बाहर निकलने पर होस्ट तक पूर्ण पहुँच मिल जाती है। मुख्य प्रक्रिया चलाने से पहले हमेशा किसी अप्रिविलेज्ड उपयोगकर्ता पर स्विच करें।
- डॉकरफ़ाइल में
addgroup/adduser(अल्पाइन) याgroupadd/useradd(डेबियन) से एक समर्पित सिस्टम उपयोगकर्ता और समूह बनाएँ। COPY --chown=appuser:appgroupसे ऐप फ़ाइलों का स्वामित्व बदलें — यह अलगRUN chownपरत बनाने से अधिक प्रभावी है।USERनिर्देश से उस उपयोगकर्ता पर स्विच करें। एंट्रीपॉइंट और CMD इसी उपयोगकर्ता के रूप में चलते हैं।- कुबेरनेट्स का
securityContext.runAsNonRoot: trueऐसी इमेज शुरू करने से मना कर देगा जो अभी भी रूट के रूप में चलती है।
FROM python:3.12-slim
# Create non-root user
RUN groupadd --gid 1001 appgroup && \
useradd --uid 1001 --gid appgroup --shell /bin/bash --create-home appuser
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# Copy app files with correct ownership in a single layer
COPY --chown=appuser:appgroup src/ ./src/
COPY --chown=appuser:appgroup entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
USER appuser
ENTRYPOINT ["/entrypoint.sh"]
CMD ["python", "-m", "src.main"]इमेज में स्वास्थ्य जाँच और तत्परता जाँच
कुबेरनेट्स की जीवंतता और तत्परता जाँचें घोषणापत्रों में परिभाषित की जाती हैं, लेकिन आप स्वतंत्र docker run और डॉकर कंपोज़ परिवेशों के लिए डॉकरफ़ाइल में HEALTHCHECK भी शामिल कर सकते हैं।
HEALTHCHECK --interval=10s --timeout=3s --start-period=15s --retries=3 CMD ...- एचटीटीपी सेवाओं के लिए
curl --failयाwget -qO-का उपयोग करें; गैर-एचटीटीपी डेमॉन के लिए/dev/tcp/localhost/PORTसे सॉकेट की जाँच करें। - केवल आवश्यक चीज़ें ही स्थापित करें: डिस्ट्रोलेस इमेजों में केवल स्वास्थ्य जाँच के लिए
curlजोड़ने से बचें — इसके बजाय विशेष रूप से बनाया गया जाँच बाइनरी या ऐप्लिकेशन का अपना स्वास्थ्य बाइनरी उपयोग करें।
FROM nginx:1.27-alpine
COPY nginx.conf /etc/nginx/nginx.conf
COPY dist/ /usr/share/nginx/html/
# Lightweight health check using bash TCP pseudo-device
# (no curl needed — works on any image with bash)
HEALTHCHECK --interval=15s --timeout=5s --start-period=10s --retries=3 \
CMD bash -c 'exec 3<>/dev/tcp/localhost/80 && echo -e "GET /health HTTP/1.0\r\n" >&3 && cat <&3 | grep -q "200 OK"' || exit 1
EXPOSE 80सब कुछ एक साथ: उत्पादन एंट्रीपॉइंट
नीचे एक पूर्ण, उत्पादन-स्तरीय एंट्रीपॉइंट शिम दिया गया है, जिसमें इस पाठ के सभी प्रतिरूप शामिल हैं: परिवेश सत्यापन, कॉन्फ़िगरेशन टेम्पलेट बनाना, सिग्नल अग्रेषण और नियंत्रण हस्तांतरण। यह प्रतिरूप कुबेरनेट्स पर तैनात वास्तविक Node.js, पाइथन और गो माइक्रोसर्विसों में उपयोग किया जाता है।
- हर अनुभाग में टिप्पणी दी गई है, ताकि यह स्वयं-व्याख्यात्मक टेम्पलेट के रूप में काम करे।
- शिम को 50 पंक्तियों से कम रखा गया है — एंट्रीपॉइंट सरल और जाँचे जा सकने योग्य होने चाहिए।
- अंतिम
exec "$@"पर ध्यान दें: सारी तैयारी पूरी होने के बाद शेल को ऐप्लिकेशन प्रक्रिया से बदल दिया जाता है, इसलिए वह PID 1 बन जाती है और सभी ऑपरेटिंग सिस्टम सिग्नल सीधे प्राप्त करती है।
#!/usr/bin/env bash
# entrypoint.sh — production-grade container entrypoint shim
set -euo pipefail
# ── 1. Validate required environment variables ──────────────────
REQUIRED=(DATABASE_URL APP_SECRET PORT LOG_LEVEL)
for var in "${REQUIRED[@]}"; do
[[ -n "${!var:-}" ]] || { echo "[entrypoint] FATAL: $var is not set" >&2; exit 1; }
done
# ── 2. Set safe defaults for optional variables ─────────────────
export HOST=${HOST:-0.0.0.0}
export WORKERS=${WORKERS:-2}
# ── 3. Render config template ───────────────────────────────────
if [[ -f /etc/app/app.conf.tmpl ]]; then
envsubst '${DATABASE_URL} ${PORT} ${LOG_LEVEL} ${HOST}' \
< /etc/app/app.conf.tmpl \
> /etc/app/app.conf
echo "[entrypoint] config rendered at /etc/app/app.conf"
fi
# ── 4. Wait for dependent services (optional, fast) ─────────────
if [[ -n "${WAIT_FOR_HOST:-}" ]]; then
echo "[entrypoint] waiting for ${WAIT_FOR_HOST}:${WAIT_FOR_PORT:-5432}..."
until bash -c "exec 3<>/dev/tcp/${WAIT_FOR_HOST}/${WAIT_FOR_PORT:-5432}" 2>/dev/null; do
sleep 1
done
echo "[entrypoint] dependency ready"
fi
# ── 5. Hand off to CMD (PID 1 becomes the application) ──────────
echo "[entrypoint] starting: $*"
exec "$@"ज्ञान जाँच: एंट्रीपॉइंट में सिग्नल प्रबंधन
कंटेनर एंट्रीपॉइंट स्क्रिप्टों में सिग्नल प्रबंधन के बारे में अपनी समझ जाँचें।
पुनरावृत्ति: हल्की डॉकरफ़ाइलें और शेल एंट्रीपॉइंट
आपने उत्पादन कंटेनर लेखन के सभी स्तरों को शामिल किया है:
- बहु-चरणीय बिल्ड कई
FROMनिर्देशों का उपयोग करके संकलकों और निर्माण औज़ारों को अंतिम इमेज से बाहर रखते हैं, जिससे हल्की, न्यूनतम रनटाइम परतें बनती हैं। - परतों का क्रम — स्रोत कोड से पहले निर्भरता की सूची वाली फ़ाइलें कॉपी करना — कैश हिट बढ़ाता है और सीआई निर्माण-श्रृंखलाओं को तेज़ करता है।
- BuildKit सीक्रेट और SSH माउंट प्रमाणीकृत निर्माण को बाधित किए बिना क्रेडेंशियल को इमेज इतिहास से बाहर रखते हैं।
- एंट्रीपॉइंट शिम परिवेश चरों को मान्य करते हैं,
envsubstसे कॉन्फ़िगरेशन फ़ाइलों के टेम्पलेट तैयार करते हैं औरexec "$@"के माध्यम से ऐप्लिकेशन को नियंत्रण सौंपते हैं। - सिग्नल प्रबंधन के लिए या तो
execआवश्यक है (ताकि ऐप PID 1 हो), या पृष्ठभूमि कार्यों के उपयोग के समय स्पष्टtrap+kill+waitप्रतिरूप अपनाना पड़ता है। - टिनी कंटेनर द्वारा कई प्रक्रियाएँ शुरू किए जाने पर जॉम्बी प्रक्रियाओं की सफ़ाई और सही सिग्नल अग्रेषण उपलब्ध कराती है।
- गैर-रूट उपयोगकर्ता और
HEALTHCHECKनिर्देश मिलकर एक सुरक्षित, निगरानी योग्य इमेज तैयार करते हैं, जो कुबेरनेट्स के उत्पादन कार्यभार के लिए तैयार होती है।
इन प्रतिरूपों को लगातार अपनाने पर आपकी इमेजें छोटी होंगी, तैनाती तेज़ होगी और उत्पादन परिस्थितियों में काफ़ी अधिक सुदृढ़ रहेंगी।
एआई शिक्षक के साथ Bash सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 22
- पाठ
- 88
अक्सर पूछे जाने वाले प्रश्न
क्या “हल्की Dockerfile और Shell एंट्रीपॉइंट लिखना” पाठ निःशुल्क है?
हाँ—“हल्की Dockerfile और Shell एंट्रीपॉइंट लिखना” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Linux कमांड लाइन और Bash स्क्रिप्टिंग में महारत पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Linux कमांड लाइन और Bash स्क्रिप्टिंग में महारत पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“हल्की Dockerfile और Shell एंट्रीपॉइंट लिखना” में मैं क्या सीखूँगा?
सिग्नल हैंडलिंग और कॉन्फ़िगरेशन टेम्पलेटिंग के साथ बहु-चरणीय बिल्ड स्क्रिप्ट और मज़बूत एंट्रीपॉइंट शिम लिखें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Linux कमांड लाइन और Bash स्क्रिप्टिंग में महारत का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या Linux कमांड लाइन और Bash स्क्रिप्टिंग में महारत शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Linux कमांड लाइन और Bash स्क्रिप्टिंग में महारत शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 1वाँ पाठ है।
“हल्की Dockerfile और Shell एंट्रीपॉइंट लिखना” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस Linux कमांड लाइन और Bash स्क्रिप्टिंग में महारत पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर Linux कमांड लाइन और Bash स्क्रिप्टिंग में महारत पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- हल्की Dockerfile और Shell एंट्रीपॉइंट लिखना
- envsubst और heredoc से कॉन्फ़िगरेशन टेम्पलेट बनाना
- CLI और jq से क्लाउड संसाधनों की स्क्रिप्टिंग
- स्वास्थ्य जाँच, तत्परता द्वार और प्रतीक्षा लूप