PHP Academy · पाठ

PHP एप्लिकेशन को Docker में चलाना

PHP + Nginx के लिए Docker इमेज बनाएँ और Docker Compose से उसका प्रबंधन करें

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

PHP एप्लिकेशन को Docker में चलाना, CoddyKit पर PHP Academy का एक निःशुल्क पाठ है। यह 4 में से 4वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह PHP Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। PHP Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

PHP के लिए Docker का उपयोग क्यों करें

Docker आपके एप्लिकेशन को उसकी निर्भरताओं के साथ एक पोर्टेबल कंटेनर इमेज में पैकेज करता है। एक ही इमेज विकास, CI और उत्पादन में एक समान चलती है — इससे "मेरी मशीन पर तो चलता है" जैसी समस्याएँ समाप्त हो जाती हैं।

बुनियादी PHP Dockerfile

PHP + Nginx एप्लिकेशन के लिए न्यूनतम Dockerfile।

# Dockerfile
FROM php:8.3-fpm-alpine

# Install extensions
RUN docker-php-ext-install pdo pdo_mysql opcache

# Install Composer
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer

WORKDIR /app
COPY composer.json composer.lock ./
RUN composer install --no-dev --optimize-autoloader

COPY . .

RUN chown -R www-data:www-data /app/storage /app/bootstrap/cache

बहु-चरणीय बिल्ड

अंतिम इमेज को छोटा रखने के लिए बहु-चरणीय बिल्ड का उपयोग करें — एक चरण में बिल्ड टूल इंस्टॉल करें और केवल आर्टिफैक्ट को अंतिम इमेज में कॉपी करें।

# Stage 1: builder
FROM composer:2 AS builder
WORKDIR /app
COPY composer.json composer.lock ./
RUN composer install --no-dev --optimize-autoloader

# Stage 2: runtime
FROM php:8.3-fpm-alpine
WORKDIR /app
COPY --from=builder /app/vendor ./vendor
COPY . .

docker-compose.yml

Docker Compose के साथ कई सेवाओं (PHP-FPM, Nginx, MySQL, Redis) का संयोजन करें।

# docker-compose.yml
services:
  app:
    build: .
    volumes:
      - .:/app
  nginx:
    image: nginx:alpine
    ports: ["80:80"]
    volumes:
      - .:/app
      - ./docker/nginx.conf:/etc/nginx/conf.d/default.conf
  mysql:
    image: mysql:8
    environment:
      MYSQL_DATABASE: myapp
      MYSQL_ROOT_PASSWORD: secret
    volumes:
      - db_data:/var/lib/mysql
  redis:
    image: redis:alpine
volumes:
  db_data:

Nginx कंटेनर कॉन्फ़िगरेशन

PHP-FPM अनुरोधों को प्रॉक्सी करने के लिए कस्टम Nginx कॉन्फ़िगरेशन माउंट करें।

# docker/nginx.conf
server {
    listen 80;
    root /app/public;
    index index.php;
    location / { try_files $uri /index.php?$query_string; }
    location ~ \.php$ {
        fastcgi_pass app:9000;  # service name from docker-compose
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

पर्यावरण वेरिएबल

पर्यावरण वेरिएबल को कंटेनर में भेजें — सीक्रेट को कभी भी इमेज में शामिल न करें।

# docker-compose.yml:
services:
  app:
    env_file: .env
    # or explicit:
    environment:
      - APP_ENV=production
      - DB_HOST=mysql

Laravel Artisan कमांड

कंटेनर के अंदर Artisan कमांड चलाएँ।

$ docker compose exec app php artisan migrate
$ docker compose exec app php artisan config:cache
$ docker compose exec app php artisan queue:work

स्वास्थ्य जाँच

स्वास्थ्य जाँच जोड़ें, ताकि ऑर्केस्ट्रेटर (Kubernetes, ECS) जान सकें कि कंटेनर कब तैयार है।

# Dockerfile:
HEALTHCHECK --interval=30s --timeout=5s \
  CMD curl -f http://localhost/health || exit 1

इमेज बनाना और पुश करना

अपनी इमेज बनाएँ और उसे किसी रजिस्ट्री (Docker Hub, ECR, GHCR) में पुश करें।

$ docker build -t myorg/myapp:1.0.0 .
$ docker push myorg/myapp:1.0.0

Kubernetes डिप्लॉयमेंट

Kubernetes में अपनी इमेज का उपयोग करके Deployment और Service संसाधन परिभाषित करें। kubectl set image से नए संस्करण जारी करें या YAML को अपडेट करके लागू करें।

उत्पादन सुदृढ़ीकरण

उत्पादन में Docker के तरीके: रूट के अलावा किसी उपयोगकर्ता का उपयोग करें, रूट फ़ाइल सिस्टम को केवल-पठन रखें, न्यूनतम बेस इमेज (Alpine) का उपयोग करें, विकास संबंधी निर्भरताएँ शामिल न करें, इमेज टैग को पिन करें और docker scout से CVE की जाँच करें।

सारांश

PHP-FPM + Composer के लिए Dockerfile बनाएँ। Nginx, MySQL और Redis सेवाओं के साथ स्थानीय विकास के लिए docker-compose का उपयोग करें। उत्पादन में बहु-चरणीय बिल्ड का उपयोग करें, पर्यावरण वेरिएबल डालें और Kubernetes या ECS के माध्यम से चलाएँ।

त्वरित जाँच

बहु-चरणीय Docker बिल्ड का मुख्य लाभ क्या है?

शुरुआत निःशुल्क

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

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

पाठ्यक्रम
49
पाठ
195

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

क्या “PHP एप्लिकेशन को Docker में चलाना” पाठ निःशुल्क है?

हाँ—“PHP एप्लिकेशन को Docker में चलाना” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और PHP Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। PHP Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“PHP एप्लिकेशन को Docker में चलाना” में मैं क्या सीखूँगा?

PHP + Nginx के लिए Docker इमेज बनाएँ और Docker Compose से उसका प्रबंधन करें आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ PHP Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

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

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

“PHP एप्लिकेशन को Docker में चलाना” पाठ पूरा करने में कितना समय लगता है?

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

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

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

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

  1. Nginx और PHP-FPM कॉन्फ़िगरेशन
  2. परिवेश चर और .env फ़ाइलें
  3. GitHub Actions से परिनियोजन
  4. PHP एप्लिकेशन को Docker में चलाना
← PHP Academy पर वापस जाएँ