2016-10-10 6 views
5

होस्ट करने के लिए डॉकर आर्किटेक्चर मैं डॉकर में देख रहा हूं और मैं "डॉकर वे" सर्वर पर एकाधिक वेबसाइटों को कैसे होस्ट कर सकता हूं। जहां तक ​​मैं समझता हूं, आदर्श रूप से सब कुछ अपने कंटेनरों को चलाया जाना चाहिए और इन कंटेनरों को साझा नहीं किया जाना चाहिए।एक PHP वेबसाइट

मेरा प्रश्न यह है कि नीचे एक सिंहावलोकन एक रिवर्स प्रॉक्सी में आने वाले अनुरोधों के साथ एक वैध कंटेनर सेटअप है जो वास्तविक अनुरोधों को संभालने के लिए वेबसर्वर को अंडरलेयर करने के अनुरोधों को रिले करता है।

इसके अलावा, नीचे दी गई तीन स्थितियों में मैंने आवेदन के लिए स्रोत फ़ाइलों को शामिल करने के विभिन्न तरीकों का विस्तृत विवरण दिया है और यह जानना चाहूंगा कि इनमें से कौन सा सबसे आम/उपयोग करने के लिए सबसे अच्छा है।

मेरी इच्छा डॉकर में एक सर्वर पर विभिन्न वेबसाइटों को चलाने में सक्षम होना है। आरेख में विभिन्न PHP-FPM संस्करणों द्वारा सचित्र वेबसाइटों के अनुसार अलग-अलग आवश्यकताएं हो सकती हैं। वेबसाइट की तैनाती मेरे लिए थोड़ा अस्पष्ट है क्योंकि मुझे यकीन नहीं है कि मुझे स्रोत फाइलों को nginx/PHP-FPM के साथ शामिल करना चाहिए या इसे अलग से तैनात करना चाहिए।

Docker architecture overview

मेरे मौजूदा सेटअप इस प्रकार है:

डोकर-compose.yml

version: '2' 
services: 
    nginx: 
     image: nginx:alpine 
     restart: always 
     ports: 
      - '80:80' 
     links: 
      - example_com 
      - example_org 
      - example_net 
     volumes: 
      - ./nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf:ro 

    example_com: 
     image: php:7.0-fpm-alpine 
     restart: always 
     volumes: 
      - ./sites/example_com:/var/www/example_com:ro 

    example_org: 
     image: php:7.0-fpm-alpine 
     restart: always 
     volumes: 
      - ./sites/example_org:/var/www/example_org:ro 

    example_net: 
     image: php:7.0-fpm-alpine 
     restart: always 
     volumes: 
      - ./sites/example_net:/var/www/example_net 

nginx/conf.d/default.conf

server { 
    listen  80; 
    server_name www.example.com example.com; 

    location ~ \.php$ { 
     fastcgi_pass example_com:9000; 
     fastcgi_index index.php; 
     fastcgi_param SCRIPT_FILENAME /var/www/example_com$fastcgi_script_name; 
     include  fastcgi_params; 
    } 
} 

server { 
    listen  80; 
    server_name www.example.org example.org; 

    location ~ \.php$ { 
     fastcgi_pass example_org:9000; 
     fastcgi_index index.php; 
     fastcgi_param SCRIPT_FILENAME /var/www/example_org$fastcgi_script_name; 
     include  fastcgi_params; 
    } 
} 

server { 
    listen  80; 
    server_name www.example.net example.net; 

    location ~ \.php$ { 
     fastcgi_pass example_net:9000; 
     fastcgi_index index.php; 
     fastcgi_param SCRIPT_FILENAME /var/www/example_net$fastcgi_script_name; 
     include  fastcgi_params; 
    } 
} 

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

मैं इसे रिवर्स प्रॉक्सी और विभिन्न PHP-FPM कंटेनर के साथ सेट अप करने के बारे में कैसे जा सकता हूं, और मैं अपनी वेबसाइटों और उनके बाद के अपडेट कैसे तैनात करूं?

इस पर कोई इनपुट बहुत सराहना की जाएगी!

+0

मुझे लगता है कि "डिंगी" रिवर्स प्रॉक्सी है जो इस –

उत्तर

0

मुझे लगता है कि मुख्य nginx सर्वर से जुड़े तीन nginx सर्वर आवश्यक नहीं हैं। Php-fpm प्रक्रिया सॉकेट को सुनती है ताकि आप मुख्य nginx सर्वर

+0

के लिए उपयोगी हो सकती है, इसलिए मेरे पास रिवर्स प्रॉक्सी सीधे विभिन्न PHP-FPM कंटेनर के साथ संवाद करेगी, मैं अपनी स्रोत फ़ाइलों को कहां रखूं? – Revell

+0

आप उन्हें एक अलग मात्रा में डाल सकते हैं और जो भी कंटेनर आप एक्सेस चाहते हैं उसे दे सकते हैं। –

+0

@ChrisTanner तो क्या स्थिति 1 में वर्णित किया जाएगा? – Revell

0

से प्रत्येक php-fpm प्रक्रिया से सीधे कनेक्ट कर सकें। मेरे पास लगभग एक ही वेबसर्वर चलने वाला लगभग समान परिदृश्य है। सबसे पहले मुझे लगता है कि आप सेटअप कर रहे हैं इस तरह एक कंटेनर का उपयोग रिवर्स प्रॉक्सी के रूप में और प्रत्येक वेबसर्वर के लिए दूसरा है।

मुझे यकीन नहीं है कि यह आवश्यक है कि PHP अपने स्वयं के कंटेनर में चल रहा हो। मैं अपाचे का उपयोग कर रहा nginx के बजाय (नापसंद करने से नफरत वाला) और दोनों मुझे देने के लिए एक स्वयं की छवि बनाई डोकर-compose.yml

version: '2' 

services: 
    webproxy: 
    image: myown/webproxy:x.y 
    [...] 

    webserver: 
    image: myown/webserver:x.y 
    [...] 

अपने दूसरे प्रश्न के संबंध में निम्नलिखित: मैं इस सवाल का अपने आप और मैं किया गया है डेटा कंटेनर का उपयोग करने में कभी भी एक बिंदु नहीं देखा। डेटा एक ही डिस्क स्थान का उपयोग करता है लेकिन आप नहीं जानते कि यह कहां संग्रहीत है। मेरी राय में बैकअप के लिए थोड़ा मुश्किल। यही वजह है कि मैं मेजबान की डिस्क पर आपके पहले दृष्टिकोण बढ़ते डेटा वॉल्यूम का उपयोग कर रहा हूं।

संबंधित मुद्दे