होम

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

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

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

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

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

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

चरण 3: GitHub Desktop से Vibe प्रोजेक्ट क्लोन करें

चरण 4: प्रोजेक्ट को VS Code में खोलें

चरण 5: कंटेनर में फिर से खोलें

Apple Silicon Macs: यह इमेज Intel/AMD प्रोसेसर के लिए बनी है। Docker Desktop इसे इम्यूलेशन के ज़रिए चलाता है, इसलिए पहला बिल्ड और खुद R धीमे चलते हैं, लेकिन सब कुछ काम करता है।

नोट: कंटेनर में स्वचालित रूप से R एक्सटेंशन और languageserver पैकेज शामिल होते हैं। Dockerfile और devcontainer.json यह काम आपके लिए संभालते हैं।

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

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

pwd

आपको /workspaces/vibe दिखेगा - यह कंटेनर के अंदर आपका प्रोजेक्ट फ़ोल्डर है।

ls

आपको प्रोजेक्ट की वही फ़ाइलें दिखेंगी: R/, docs/, README.md, आदि। (डॉट से शुरू होने वाले फ़ोल्डर, जैसे .devcontainer/, छिपे रहते हैं; ls -a उन्हें दिखाता है)

cd ..
ls

आपको केवल vibe/ दिखेगा - कंटेनर आइसोलेटेड है। आप अपने कंप्यूटर के अन्य फ़ोल्डर, Desktop या Documents तक नहीं पहुँच सकते। यह आइसोलेशन सुनिश्चित करता है कि आपका R एनवायरनमेंट साफ़ और रिप्रोड्यूसिबल रहे।

cd vibe

चरण 7: R कोड को लाइन-दर-लाइन चलाएँ

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

चरण 8: ऐप चलाएँ

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

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

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

titlePanel("My First R Docker App"),

चरण 10: Dockerfile को समझें (वैकल्पिक)

# choose a Dockerhub base image with R, Shiny Server, and tidyverse packages
FROM rocker/shiny-verse:latest

# 1. System deps commonly needed by R packages
RUN apt-get update && apt-get install -y \
    libcurl4-openssl-dev libssl-dev libxml2-dev git curl && \
    rm -rf /var/lib/apt/lists/*

# 2. R packages for VS Code integration: language server + debugger
RUN R -q -e 'install.packages(c("rstudioapi", "languageserver"), repos="https://cloud.r-project.org")'

# 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. Give shiny passwordless sudo for updating Claude Code from VS Code
RUN echo 'shiny ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers && \
    rm -rf /var/lib/apt/lists/*

# Expose Shiny server port
EXPOSE 3838

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

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

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

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

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

library(data.table)

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

अगले कदम

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

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

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

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

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

  1. Docker Desktop शुरू करें - ऐप खोलें और हरे स्टेटस इंडिकेटर का इंतज़ार करें (Docker का चलना ज़रूरी है)
  2. VS Code खोलें - VS Code लॉन्च करें और अपना प्रोजेक्ट फ़ोल्डर खोलें
  3. कंटेनर में फिर से खोलें - अगर पहले से कंटेनर में नहीं हैं, तो >< आइकन (नीचे बाईं ओर) पर क्लिक करें और Reopen in Container चुनें
  4. कोड लिखें और चलाएँ - .R फ़ाइलों को एडिट करें, Ctrl+Enter/Cmd+Enter से लाइन-दर-लाइन चलाएँ, या ▶ Run Shiny App बटन से Shiny ऐप्स चलाएँ
  5. अपना काम सेव करें - आपकी कोड फ़ाइलें (.R, .Rmd) आपके कंप्यूटर पर सेव होती हैं और सेशन के बीच भी बनी रहती हैं
  6. कमिट और पुश करें - अपने बदलाव कमिट करने और रिपॉज़िटरी में पुश करने के लिए GitHub Desktop का उपयोग करें

Docker Desktop क्या है?

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

आप Docker Desktop को अपने कंटेनर के लिए कंट्रोल सेंटर मान सकते हैं। जब आप Docker Desktop खोलते हैं, तो यह Docker इंजन शुरू करता है। Docker इंजन Docker का वह हिस्सा है जो वास्तव में कंटेनर बनाता और चलाता है। आपको आमतौर पर इंजन से सीधे इंटरैक्ट करने की ज़रूरत नहीं होती क्योंकि Docker Desktop इसे आपके लिए मैनेज करता है।

Docker Desktop क्या करता है?

Docker Desktop कई महत्वपूर्ण काम करता है:

Docker Desktop इस ट्यूटोरियल में कैसे फिट बैठता है

तीन हिस्से मिलकर काम करते हैं:

  1. Docker Desktop आपके कंप्यूटर पर Docker इंजन चलाता है।
  2. VS Code वह एडिटर देता है जहाँ आप R कोड लिखते और चलाते हैं।
  3. Dev Container R, R पैकेज और इस प्रोजेक्ट में उपयोग किए जाने वाले टूल वाला एक तैयार Linux एनवायरनमेंट प्रदान करता है।

जब आप Reopen in Container चुनते हैं, तो VS Code Docker Desktop से प्रोजेक्ट का कंटेनर बनाने या शुरू करने के लिए कहता है। आपका कंप्यूटर अभी भी एप्लिकेशन चला रहा है, लेकिन R एनवायरनमेंट कंटेनर के अंदर है। इससे R वर्शन, पैकेज और सिस्टम टूल आपके कंप्यूटर के बाकी हिस्सों से अलग रहते हैं।

Docker Desktop VS Code, R या आपके वेब ब्राउज़र की जगह नहीं लेता। यह वह एनवायरनमेंट प्रदान करता है जो कंटेनर को चलाता है। VS Code वह जगह है जहाँ आप काम करते हैं, R वह भाषा है जिसका आप उपयोग करते हैं, और आपका ब्राउज़र वह जगह है जहाँ आप Shiny ऐप देखते हैं।

Docker Desktop का उपयोग क्यों करें?

R और हर ज़रूरी पैकेज को सीधे अपने कंप्यूटर पर इंस्टॉल करने से कभी-कभी वर्शन कॉन्फ़्लिक्ट हो सकता है। एक प्रोजेक्ट को किसी दूसरे प्रोजेक्ट से अलग पैकेज वर्शन की ज़रूरत हो सकती है। Docker Desktop हर प्रोजेक्ट को उसका अपना नियंत्रित एनवायरनमेंट देकर इन कॉन्फ़्लिक्ट से बचने में मदद करता है।

उदाहरण के लिए, अगर कोई सहपाठी वही प्रोजेक्ट फ़ाइलें और Docker सेटिंग्स उपयोग करता है, तो Docker एक ऐसा एनवायरनमेंट बना सकता है जो आपके जैसा ही हो। इससे यह संभावना कम हो जाती है कि आपको केवल अलग सॉफ़्टवेयर वर्शन के कारण कोई त्रुटि दिखे। आपका R कोड और प्रोजेक्ट फ़ाइलें आपके कंप्यूटर पर ही रहती हैं, जबकि उन्हें चलाने के लिए ज़रूरी टूल कंटेनर के अंदर व्यवस्थित होते हैं।

इस प्रोजेक्ट को कंटेनर में बिल्ड या फिर से खोलने से पहले Docker Desktop का खुला और चालू होना ज़रूरी है। अगर Docker Desktop बंद है, तो VS Code कंटेनर शुरू नहीं कर सकता, और आपको यह त्रुटि दिख सकती है कि Docker नहीं चल रहा है।


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