होम

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

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

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

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

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

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

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

हम ये फ़ोल्डर VS Code में इसलिए बनाते हैं क्योंकि Mac का Finder डॉट (.) से शुरू होने वाला फ़ोल्डर नाम रखने नहीं देता।

चरण 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 scikit-learn

# 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 (newer npm blocks its setup script unless allowed)
RUN npm config set allow-scripts=@anthropic-ai/claude-code --location=global \
    && 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_names[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.savefig('iris_histogram.png')

चरण 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: कंटेनर में फिर से खोलें

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

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

pwd

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

ls -a

आपको वे फ़ोल्डर दिखेंगे जो आपने बनाए थे: .devcontainer/, python/, आदि। (-a उन फ़ोल्डरों को भी दिखाता है जिनके नाम डॉट से शुरू होते हैं)

cd ..
ls

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

cd python-docker-demo

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

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

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

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

cd python
streamlit run app.py

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

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

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

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

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

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

बेस इमेज बदलने के बाद, बदलाव लागू करने के लिए कंटेनर को फिर से बिल्ड करें। ध्यान दें: इस Dockerfile के साथ, जैसा यह लिखा है, केवल Debian-आधारित इमेज जैसे python:3.12 और python:3.12-slim ही काम करते हैं; Alpine इमेज और Jupyter इमेज के लिए अलग Dockerfile चाहिए।

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

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

RUN pip install --no-cache-dir \
    pandas matplotlib seaborn streamlit jupyter scikit-learn plotly
python -c "import plotly; print(plotly.__version__)"

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

अगले कदम

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

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

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

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

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

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

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