होम

Docker Container के ज़रिए VS Code में Python कोडिंग

कभी अपना Python कोड किसी सहकर्मी के साथ साझा करने की कोशिश की और “लेकिन यह मेरी मशीन पर तो काम करता है” जैसी समस्याओं को सुलझाने में घंटों बिताए? Docker container कोड के लिए शिपिंग कंटेनर जैसे हैं—वे आपके Python एनवायरनमेंट, लाइब्रेरी, और डिपेंडेंसी को एक सील किए हुए बॉक्स में पैक कर देते हैं जो हर जगह एक जैसा काम करता है। इसके अलावा, आपको Docker Hub पर हज़ारों पहले से बने इमेज तक पहुँच मिलती है, जहाँ सॉफ़्टवेयर डेवलपर तैयार-उपयोग एनवायरनमेंट पब्लिश करते हैं, जिससे मैन्युअल सॉफ़्टवेयर इंस्टॉलेशन की परेशानी नहीं होती। यह ट्यूटोरियल आपको दिखाता है कि VS Code और Docker Desktop का उपयोग करके एक अलग, दोहराने योग्य (reproducible) एनवायरनमेंट में Python कैसे चलाएँ।

मुख्य अवधारणाएँ

आपको क्या चाहिए

चरण 1: Docker Desktop इंस्टॉल करें

चरण 2: Dev Containers Extension इंस्टॉल करें

चरण 3: एक Python प्रोजेक्ट फ़ोल्डर बनाएँ

चरण 4: Dockerfile बनाएँ

# Choose the official Python slim image
FROM python:3.12-slim

# 1. Install system dependencies
RUN apt-get update && apt-get install -y \
    git curl build-essential && \
    rm -rf /var/lib/apt/lists/*

# 2. Install Python packages for data science and web apps
RUN pip install --no-cache-dir \
    pandas matplotlib seaborn streamlit jupyter

# 3. Install Node.js LTS from NodeSource
RUN curl -fsSL https://deb.nodesource.com/setup_lts.x | bash - \
    && apt-get install -y nodejs \
    && npm install -g npm@latest

# 4. Install Claude Code globally
RUN npm install -g @anthropic-ai/claude-code

# 5. Expose Streamlit port
EXPOSE 8501

चरण 5: Dev Container कॉन्फ़िगरेशन बनाएँ

{
  "name": "Python in Docker",
  "build": {
    "dockerfile": "Dockerfile"
  },
  "customizations": {
    "vscode": {
      "extensions": [
        "ms-python.python",
        "ms-python.debugpy"
      ]
    }
  },
  "forwardPorts": [8501],
  "postCreateCommand": "python3 --version"
}

चरण 6: एक Python डेटा विश्लेषण स्क्रिप्ट बनाएँ

# Simple data analysis using the iris dataset
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris

# Load the iris dataset
iris = load_iris()
df = pd.DataFrame(iris.data, columns=iris.feature_names)
df['species'] = iris.target

# Display first few rows
print(df.head())

# Summary statistics
print("\nSummary statistics:")
print(df.describe())

# Create histograms
plt.figure(figsize=(10, 6))
plt.hist(df['sepal length (cm)'], bins=20, alpha=0.7, label='Sepal Length')
plt.hist(df['sepal width (cm)'], bins=20, alpha=0.7, label='Sepal Width')
plt.xlabel('Measurement (cm)')
plt.ylabel('Frequency')
plt.title('Iris Sepal Measurements')
plt.legend()
plt.show()

चरण 7: एक Streamlit वेब ऐप बनाएँ

import streamlit as st
import numpy as np
import matplotlib.pyplot as plt

st.title("Old Faithful Geyser Data")

# Slider for number of bins
bins = st.slider("Number of bins:", min_value=5, max_value=50, value=30)

# Generate sample data (simulating Old Faithful eruption durations)
np.random.seed(42)
data = np.concatenate([
    np.random.normal(2, 0.5, 100),
    np.random.normal(4.5, 0.5, 150)
])

# Create histogram
fig, ax = plt.subplots()
ax.hist(data, bins=bins, edgecolor='black')
ax.set_xlabel('Eruption Duration (minutes)')
ax.set_ylabel('Frequency')
ax.set_title(f'Histogram with {bins} bins')

st.pyplot(fig)

चरण 8: Container में फिर से खोलें

चरण 9: Container एनवायरनमेंट को समझें

अब आप एक Linux container के भीतर कोडिंग कर रहे हैं। आइए समझें कि इसका क्या मतलब है।

pwd

आपको /workspaces/python-docker-demo दिखेगा - यह container के भीतर आपका प्रोजेक्ट फ़ोल्डर है।

ls

आपको वे फ़ोल्डर दिखेंगे जो आपने बनाए थे: .devcontainer/, python/, आदि।

cd ..
ls

आपको केवल python-docker-demo/ दिखेगा - container अलग-थलग (isolated) है। आप अपने कंप्यूटर के अन्य फ़ोल्डर, Desktop, या Documents तक नहीं पहुँच सकते। यह आइसोलेशन सुनिश्चित करता है कि आपका Python एनवायरनमेंट साफ़ और दोहराने योग्य (reproducible) है।

cd python-docker-demo

चरण 10: Python कोड लाइन-दर-लाइन चलाएँ

Container में Python पहले से डेटा साइंस पैकेजों के साथ इंस्टॉल है। आइए विश्लेषण स्क्रिप्ट चलाएँ।

चरण 11: Streamlit ऐप चलाएँ

प्रोजेक्ट में एक डेमो Streamlit ऐप शामिल है जो एक इंटरैक्टिव हिस्टोग्राम बनाता है।

cd python
streamlit run app.py

चरण 12: एक साधारण बदलाव करें

आइए ऐप में बदलाव करें यह देखने के लिए कि डेवलपमेंट कैसे काम करता है।

st.title("My First Python Docker App")

चरण 13: Dockerfile को समझना (वैकल्पिक)

मुख्य हिस्से:

अन्य Python इमेज जिनका आप उपयोग कर सकते हैं:

बेस इमेज बदलने के बाद, बदलाव लागू करने के लिए container को फिर से बिल्ड करें।

चरण 14: Docker इमेज में Python पैकेज इंस्टॉल करें (वैकल्पिक)

terminal में pip से इंस्टॉल किए गए पैकेज (pip install package) अस्थायी होते हैं और container को फिर से बिल्ड करने पर गायब हो जाते हैं। पैकेजों को स्थायी बनाने के लिए, उन्हें Dockerfile में जोड़ें।

RUN pip install --no-cache-dir \
    pandas matplotlib seaborn streamlit jupyter scikit-learn
import sklearn
print(sklearn.__version__)

यदि यह बिना किसी त्रुटि के वर्शन दिखाता है, तो पैकेज स्थायी रूप से इंस्टॉल हो गया है।

अगले कदम

समस्या निवारण

वर्कफ़्लो अवलोकन

यह सेटअप आपको एक पेशेवर Python डेवलपमेंट एनवायरनमेंट देता है:

रोज़मर्रा का वर्कफ़्लो

एक बार सब कुछ सेट हो जाने के बाद, आपकी रोज़ की दिनचर्या यह है:

  1. Docker Desktop शुरू करें - ऐप खोलें और हरे स्टेटस इंडिकेटर की प्रतीक्षा करें (Docker चल रहा होना चाहिए)
  2. VS Code खोलें - VS Code लॉन्च करें और अपना प्रोजेक्ट फ़ोल्डर खोलें
  3. Container में फिर से खोलें - यदि पहले से container में नहीं हैं, तो हरे आइकन (नीचे-बाएँ) पर क्लिक करें और Reopen in Container चुनें
  4. कोड लिखें और चलाएँ - .py फ़ाइलें एडिट करें, Shift+Enter से लाइन-दर-लाइन चलाएँ, या streamlit run app.py से ऐप चलाएँ
  5. अपना काम सेव करें - आपकी कोड फ़ाइलें (.py, .ipynb) आपके कंप्यूटर में सेव होती हैं और सेशन के बाद भी बनी रहती हैं
  6. कमिट और पुश करें - अपने बदलाव कमिट करने और रिपॉज़िटरी में पुश करने के लिए GitHub Desktop का उपयोग करें

निर्माता: Steven Ge, 7 दिसंबर, 2025।