Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

डॉकटर के साथ अपाचे, माईएसक्यूएल और पीएचपी को कंटेनरीकृत करना

यदि आप PHP के साथ काम कर रहे हैं, और आप प्रति कंटेनर एक ही प्रक्रिया करना चाहते हैं, तो मैं Nginx का उपयोग करने और PHP-FPM का उपयोग करने की सलाह देता हूं, क्योंकि इस प्रकार के सेटअप के लिए अपाचे की तुलना में कॉन्फ़िगर करना काफी आसान है (कम से कम मैं यही हूं मिल गया)।

आपको यह सुनिश्चित करने की आवश्यकता है कि आपके पास Nginx और PHP दोनों कंटेनरों के लिए एक साझा साझा मात्रा है। उस वॉल्यूम में आपका index.php . होगा . यहाँ एक कच्चा उदाहरण है docker-compose.yml:

services:
  php7:
    image: "php:7.1.10-fpm"
    container_name: "prefix-php"
    volumes:
      - "./your/local/dir:/var/www/html"
  nginx:
    image: "nginx:1.13.6"
    container_name: "prefix-nginx"
    ports:
      - "80:80"
      - "443:443"
    links:
      - "php7"
    volumes:
      - "./your/local/dir:/var/www/html"

फिर आप इस निम्न कमांड को उस निर्देशिका में चलाएंगे जहां docker-compose.yml फ़ाइल है:

$ docker-compose -p prefix

"उपसर्ग" का कारण यह है कि आप अपने कंटेनरों के लिए एक प्रोजेक्ट ग्रुपिंग बनाते हैं ताकि अन्य कंटेनर नामों के साथ टकराव न हो।

स्वाभाविक रूप से आपको एक nginx साइट कॉन्फ़िगरेशन की आवश्यकता होती है जो /var/www/html . को इंगित करता है . php-fpm कंटेनर के लिए आपके पास बहुत कम या कोई कॉन्फ़िगरेशन आवश्यकताएं नहीं होंगी।

Nginx कॉन्फ़िगरेशन के बारे में एक साइड नोट। उपरोक्त docker-compose.yml nginx कॉन्फ़िगरेशन के भीतर php कंटेनर के संदर्भ के बिना अधूरा है। यह ऐसा दिखाई देगा (मोटे तौर पर बोलते हुए):

server {
    listen 80 default_server;

    # ...more config, like root, index, server_name, etc

    location ~* \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass prefix-php:9000; # Note the container name here.
        fastcgi_index index.php;
        fastcgi_hide_header X-Powered-By;
        fastcgi_read_timeout 300s;

        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    # ...more rules
}

आप देखेंगे कि मैंने कंटेनर का नाम "php7" रखा है, आप वास्तव में इस docker-compose.yml में एक और "php5" कंटेनर जोड़ सकते हैं। और फिर यह आपको nginx साइटों को परिभाषित करने की अनुमति देता है जो PHP के विभिन्न संस्करणों का उपयोग करते हैं जो सभी एक ही docker-compose सेटअप पर चल रहे हैं।

मैं सराहना करता हूं कि यह सीधे आपके प्रश्न का उत्तर नहीं देता है क्योंकि यह अपाचे का उपयोग करके इसे हल नहीं करता है, लेकिन यह विचार करने का एक विकल्प है।

उम्मीद है कि यह आपको कम से कम आपके सेटअप को हल करने में मदद करने के लिए सुझाव देता है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. अद्यतन क्वेरी के WHERE खंड में क्वेरी का चयन करें

  2. भाषा अनुवाद व्याकरण

  3. mysql कार्यक्षेत्र से निष्पादित प्रश्नों को सीधे mysql cli से निष्पादित करने में अधिक समय क्यों लगता है?

  4. अगर mysql क्वेरी में अन्य शर्तें हैं

  5. एक ही क्वेरी में 2 टेबल्स को क्वेरी करना