डॉकर और PHP: एप से लेकर ज़ेड तक एप्लिकेशन कंटेनरीकरण
\n\nDocker की मदद से PHP-एप्लिकेशन का कंटेनरीकरण आधुनिक वेब डेवलपमेंट का मानक बन गया है। चाहे आप एक साधारण लैंडिंग पेज बना रहे हों या एक जटिल कॉर्पोरेट एप्लिकेशन, Docker स्थानीय डेवलपमेंट से लेकर प्रोडक्शन तक, सभी चरणों में वातावरण की एकरूपता सुनिश्चित करता है। इस लेख में, हम PHP-एप्लिकेशन के लिए Docker इंफ्रास्ट्रक्चर बनाने के सभी चरणों को समझेंगे - बुनियादी Dockerfile से लेकर Nginx और MySQL के साथ पूर्ण स्टैक तक।
\n\nPHP डेवलपर के लिए Docker क्यों महत्वपूर्ण है
\n\nपारंपरिक PHP डेवलपमेंट में अक्सर "मेरी मशीन पर काम करता है" की समस्या का सामना करना पड़ता है। PHP के अलग-अलग वर्जन, एक्सटेंशन, सर्वर सेटिंग्स - ये सब संघर्षों का कारण बनते हैं। Docker इस समस्या को हमेशा के लिए हल करता है:
\n\n- \n
- वातावरण का अलगाव - प्रत्येक एप्लिकेशन की अपनी निर्भरताओं का सेट होता है \n
- पुनरुत्पादन क्षमता - सभी मशीनों पर समान वातावरण \n
- स्केलेबिलिटी - नई सेवाओं (Redis, Elasticsearch) को आसानी से जोड़ा जा सकता है \n
- CI/CD एकीकरण - कंटेनर पाइपलाइनों के लिए आदर्श हैं \n
आइए सिद्धांत से व्यवहार की ओर बढ़ें और PHP-एप्लिकेशन के लिए एक पूर्ण Docker वातावरण बनाएं।
\n\nPHP के लिए बुनियादी Dockerfile बनाना
\n\nचलिए सबसे महत्वपूर्ण चीज़ से शुरू करते हैं - Dockerfile। यह आपके PHP-एप्लिकेशन की इमेज बनाने का निर्देश है। production-ready एप्लिकेशन के लिए यहाँ एक इष्टतम कॉन्फ़िगरेशन है:
\n\n# आधिकारिक PHP इमेज का उपयोग FPM के साथ करें\nFROM php:8.2-fpm-alpine\n\n# सिस्टम निर्भरताएँ स्थापित करें\nRUN apk add --no-cache \\\n git \\\n unzip \\\n libpq-dev \\\n libzip-dev \\\n && docker-php-ext-install \\\n pdo_mysql \\\n zip \\\n opcache\n\n# Composer स्थापित करें\nCOPY --from=composer:latest /usr/bin/composer /usr/bin/composer\n\n# प्रोडक्शन के लिए OPcache कॉन्फ़िगर करें\nRUN { \\\n echo 'opcache.memory_consumption=128'; \\\n echo 'opcache.interned_strings_buffer=8'; \\\n echo 'opcache.max_accelerated_files=4000'; \\\n echo 'opcache.revalidate_freq=2'; \\\n echo 'opcache.fast_shutdown=1'; \\\n echo 'opcache.enable_cli=1'; \\\n} > /usr/local/etc/php/conf.d/opcache.ini\n\n# एप्लिकेशन फ़ाइलें कॉपी करें\nWORKDIR /var/www/html\nCOPY . .\n\n# अनुमतियाँ सेट करें\nRUN chown -R www-data:www-data /var/www/html \\\n && chmod -R 755 storage bootstrap/cache\n\n# PHP-FPM चलाएँ\nCMD ["php-fpm"]\n\nEXPOSE 9000\n\nयह Dockerfile Alpine Linux का उपयोग करता है - एक न्यूनतम इमेज जो अंतिम कंटेनर के आकार को काफी कम कर देती है। हम केवल आवश्यक एक्सटेंशन स्थापित करते हैं: डेटाबेस के साथ काम करने के लिए pdo_mysql और Composer के लिए zip।
\n\nकंटेनर बनाना और चलाना
\n\n# इमेज बनाएँ\ndocker build -t my-php-app .\n\n# कंटेनर चलाएँ\ndocker run -d -p 9000:9000 --name php-app my-php-app\n\ndocker-compose के माध्यम से Nginx और MySQL के साथ पूर्ण स्टैक
\n\nएक वास्तविक एप्लिकेशन शायद ही कभी एक PHP कंटेनर से बना होता है। हमें एक वेब सर्वर और एक डेटाबेस की आवश्यकता है। यहाँ docker-compose काम आता है - कई कंटेनरों को ऑर्केस्ट्रेट करने का एक उपकरण।
\n\nआइए एक docker-compose.yml फ़ाइल बनाएँ:
version: '3.8'\n\nservices:\n # PHP-FPM सेवा\n app:\n build:\n context: .\n dockerfile: Dockerfile\n container_name: php-app\n volumes:\n - ./:/var/www/html\n networks:\n - app-network\n\n # Nginx वेब सर्वर\n nginx:\n image: nginx:alpine\n container_name: php-nginx\n ports:\n - "8080:80"\n volumes:\n - ./:/var/www/html\n - ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf\n depends_on:\n - app\n networks:\n - app-network\n\n # MySQL डेटाबेस\n db:\n image: mysql:8.0\n container_name: php-mysql\n ports:\n - "3306:3306"\n environment:\n MYSQL_ROOT_PASSWORD: root_password\n MYSQL_DATABASE: app_database\n MYSQL_USER: app_user\n MYSQL_