R Academy · पाठ

Plumber API को उत्पादन में परिनियोजित करना

Plumber API को Docker और क्लाउड प्लेटफ़ॉर्म की सहायता से कंटेनरीकृत और परिनियोजित करें।

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

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

उत्पादन परिनियोजन के विकल्प

Plumber API को कई तरीकों से परिनियोजित किया जा सकता है:

  • Docker कंटेनर — पोर्टेबल, दोहराए जा सकने योग्य और हर जगह काम करता है
  • Posit Connect — शेड्यूलिंग के साथ एक-क्लिक परिनियोजन
  • Digital Ocean / EC2 — R चलाने वाला सामान्य Linux VM

Docker सबसे अधिक पोर्टेबल विकल्प और उत्पादन R API के लिए उद्योग-मानक है।

Plumber API का प्रवेश बिंदु

ऐसी शीर्ष-स्तरीय api.R फ़ाइल बनाएँ जो Plumber सर्वर शुरू करे। Sys.getenv('PORT', unset='8000') का उपयोग करें, ताकि कोड बदले बिना कंटेनर ऑर्केस्ट्रेटर द्वारा पोर्ट सेट किया जा सके।

# api.R
# library(plumber)
#
# pr <- plumb('routes.R')
# port <- as.integer(Sys.getenv('PORT', unset = '8000'))
# pr$run(host = '0.0.0.0', port = port)
#
# Listening on 0.0.0.0 is required inside Docker
# (127.0.0.1 is only reachable inside the container)

आधार Docker इमेज — rocker/r-ver

rocker/r-ver इमेज न्यूनतम, विशिष्ट संस्करण पर स्थिर R परिवेश उपलब्ध कराती है। दोहराए जा सकने वाले बिल्ड सुनिश्चित करने के लिए हमेशा किसी विशिष्ट R संस्करण पर स्थिर करें (जैसे rocker/r-ver:4.3.2)। उत्पादन में :latest से बचें।

# Dockerfile
# FROM rocker/r-ver:4.3.2
#
# Alternatively use rocker/plumber which pre-installs plumber:
# FROM rstudio/plumber:latest
#
# rocker/r-ver is more minimal and gives you full control
# over which packages are installed.

Dockerfile में R पैकेज इंस्टॉल करना

इमेज बिल्ड के दौरान पैकेज इंस्टॉल करने के लिए RUN Rscript -e "install.packages(...)" का उपयोग करें। पहले सिस्टम निर्भरताएँ इंस्टॉल करें (जैसे httr2 के लिए libssl-dev) और इसके लिए apt-get का उपयोग करें।

# FROM rocker/r-ver:4.3.2
#
# RUN apt-get update && apt-get install -y \
#     libssl-dev \
#     libcurl4-openssl-dev \
#  && rm -rf /var/lib/apt/lists/*
#
# RUN Rscript -e "install.packages(c('plumber', 'jsonlite', 'httr2'), repos='https://cloud.r-project.org')"

फ़ाइलें कॉपी करना और पोर्ट सेट करना

COPY का उपयोग करके अपनी R स्रोत फ़ाइलों को कंटेनर में कॉपी करें। EXPOSE के साथ पोर्ट घोषित करें, ताकि Docker को पता हो कि कंटेनर किस पोर्ट पर सुनता है। यह केवल दस्तावेज़ीकरण है — इससे पोर्ट प्रकाशित नहीं होता।

# FROM rocker/r-ver:4.3.2
# ...
# WORKDIR /app
# COPY routes.R .
# COPY api.R .
#
# EXPOSE 8000
#
# CMD ["Rscript", "api.R"]

Docker इमेज बनाना और चलाना

docker build से इमेज बनाएँ, फिर होस्ट पोर्ट को कंटेनर पोर्ट से मैप करके कंटेनर चलाएँ। -e फ़्लैग सीक्रेट के लिए env वेरिएबल भेजता है।

# Build the image:
# docker build -t my-r-api:1.0 .
#
# Run a container:
# docker run -d \
#   -p 8000:8000 \
#   -e API_SECRET_KEY='my_secret' \
#   -e DATABASE_URL='postgres://...' \
#   --name r-api \
#   my-r-api:1.0
#
# Test:
# curl http://localhost:8000/ping

Sys.getenv() से सीक्रेट पढ़ना

उत्पादन में सीक्रेट को Dockerfile या स्रोत कोड में कभी न रखें। उन्हें रनटाइम पर Sys.getenv() से पढ़ें। उन्हें Docker के -e फ़्लैग, Kubernetes सीक्रेट या AWS Secrets Manager जैसी env-वेरिएबल प्रबंधन प्रणालियों के माध्यम से भेजें।

# In routes.R:
# db_url   <- Sys.getenv('DATABASE_URL', unset = '')
# api_key  <- Sys.getenv('API_SECRET_KEY', unset = '')
#
# if (nchar(db_url) == 0)  stop('DATABASE_URL is required')
# if (nchar(api_key) == 0) stop('API_SECRET_KEY is required')
#
# Fail fast at startup rather than failing silently at request time
cat('Validate all required env vars at startup with stop()
')

स्वास्थ्य जाँच एंडपॉइंट

/ping या /health एंडपॉइंट लोड बैलेंसर और ऑर्केस्ट्रेटर (Kubernetes, ECS) को यह पुष्टि करने देता है कि API सक्रिय है। इसे बिना प्रमाणीकरण के तुरंत 200 लौटाना चाहिए और वैकल्पिक रूप से DB कनेक्टिविटी की जाँच करनी चाहिए।

# #* Health check
# #* @preempt auth
# #* @get /ping
# function() {
#   list(
#     status  = 'ok',
#     version = '1.0.0',
#     time    = format(Sys.time(), '%Y-%m-%dT%H:%M:%SZ')
#   )
# }
#
# Docker HEALTHCHECK:
# HEALTHCHECK CMD curl -f http://localhost:8000/ping || exit 1

पूर्ण Dockerfile उदाहरण

सब कुछ एक साथ — Plumber API के लिए उत्पादन-तैयार Dockerfile:

# FROM rocker/r-ver:4.3.2
# RUN apt-get update && apt-get install -y libssl-dev libcurl4-openssl-dev \
#  && rm -rf /var/lib/apt/lists/*
# RUN Rscript -e "install.packages(c('plumber','jsonlite'), repos='https://cloud.r-project.org')"
# WORKDIR /app
# COPY routes.R api.R ./
# EXPOSE 8000
# HEALTHCHECK CMD curl -f http://localhost:8000/ping || exit 1
# CMD ["Rscript", "api.R"]

उत्पादन में लॉगिंग

संरचित लॉगिंग उत्पादन में समस्याओं का निदान करने में मदद करती है। टाइमस्टैम्प वाले लॉग stdout में लिखने के लिए cat() या logger पैकेज का उपयोग करें — Docker और अधिकांश प्लेटफ़ॉर्म stdout को अपने-आप कैप्चर करके लॉग एग्रीगेटर तक भेजते हैं।

# Log format: ISO timestamp + level + message
log_info <- function(msg) {
  cat(format(Sys.time(), '%Y-%m-%dT%H:%M:%S'), '[INFO]', msg, '
')
}

log_info('API starting up')
log_info(paste('Port:', Sys.getenv('PORT', '8000')))

Nginx के साथ रिवर्स प्रॉक्सी

उत्पादन में Plumber के सामने Nginx रिवर्स प्रॉक्सी रखें, ताकि TLS टर्मिनेशन, अनुरोध-दर सीमित करना और अनुरोध बफ़रिंग संभाली जा सके। Nginx अनुरोधों को localhost पर Plumber तक भेजता है, जबकि बाहरी दुनिया पोर्ट 443 पर Nginx से जुड़ती है।

# Nginx config snippet (nginx.conf):
# server {
#   listen 443 ssl;
#   ssl_certificate     /etc/letsencrypt/.../fullchain.pem;
#   ssl_certificate_key /etc/letsencrypt/.../privkey.pem;
#
#   location /api/ {
#     proxy_pass         http://127.0.0.1:8000/;
#     proxy_set_header   Host $host;
#     proxy_set_header   X-Real-IP $remote_addr;
#   }
# }

त्वरित जाँच: Docker EXPOSE

Dockerfile में EXPOSE 8000 निर्देश वास्तव में क्या करता है?

Plumber API परिनियोजन का पुनरावलोकन

उत्पादन में Plumber परिनियोजित करने के मुख्य चरण:

  • 0.0.0.0 पर सुनें और env से PORT पढ़ें
  • आधार इमेज के रूप में rocker/r-ver:X.Y.Z (विशिष्ट संस्करण पर स्थिर) का उपयोग करें
  • Dockerfile में पैकेज इंस्टॉल करें; केवल स्रोत फ़ाइलें कॉपी करें
  • -e env वेरिएबल के माध्यम से सीक्रेट भेजें — उन्हें स्रोत या Dockerfile में कभी न रखें
  • /ping स्वास्थ्य एंडपॉइंट जोड़ें (जिसमें #* @preempt auth हो)
  • TLS और अनुरोध-दर सीमित करने के लिए Nginx को रिवर्स प्रॉक्सी के रूप में उपयोग करें
शुरुआत निःशुल्क

एआई शिक्षक के साथ R सीखें — निःशुल्क

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

पाठ्यक्रम
43
पाठ
159

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

क्या “Plumber API को उत्पादन में परिनियोजित करना” पाठ निःशुल्क है?

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

“Plumber API को उत्पादन में परिनियोजित करना” में मैं क्या सीखूँगा?

Plumber API को Docker और क्लाउड प्लेटफ़ॉर्म की सहायता से कंटेनरीकृत और परिनियोजित करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ R Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या R Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

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

“Plumber API को उत्पादन में परिनियोजित करना” पाठ पूरा करने में कितना समय लगता है?

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

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

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

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

  1. Plumber और REST का परिचय
  2. GET और POST एंडपॉइंट बनाना
  3. प्रमाणीकरण और API सुरक्षा
  4. Plumber API को उत्पादन में परिनियोजित करना
← R Academy पर वापस जाएँ