VonC's उत्तर के लिए धन्यवाद मैं इसे काम करने में कामयाब रहा लेकिन मैंने अपनी वास्तुकला को थोड़ा बदल दिया, जिसके परिणामस्वरूप केवल 1 के बजाय 3 कंटेनर हो गए।
मेरे पास प्रत्येक अपाचे/PHP संस्करण के लिए एक कंटेनर है, और Nginx के साथ एक कंटेनर रिवर्स प्रॉक्सी के रूप में है। मुझे लगता है कि आप इसे आसानी से होस्ट पर Nginx स्थापित करने के लिए अनुकूलित कर सकते हैं और मेरे प्रश्न में वर्णित आर्किटेक्चर से मेल खाने के लिए इसके कॉन्फ़िगरेशन को बदल सकते हैं।
ध्यान दें कि जैसा कि मैं डॉकर के लिए नया हूं, और लिनक्स सिस्टम प्रशासन के बारे में एक नोब हूं, शायद कुछ गलतियां और चीजें हैं जो निम्नलिखित लिपियों में कोई अर्थ नहीं रखती हैं, लेकिन यह मेरे लिए काम कर रही है। इसे बेझिझक सुधारें :)
Nginx रिवर्स प्रॉक्सी इमेज
डॉकरफाइल :
FROM debian:jessie
MAINTAINER AntoineB version: 0.1
RUN apt-get update && \
apt-get install -y --force-yes \
nginx \
nano
EXPOSE 80
EXPOSE 443
ADD ./proxy.conf /etc/nginx/conf.d/proxy.conf
CMD ["nginx"]
यहाँ संदर्भित proxy.conf
है फ़ाइल :
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m;
client_body_buffer_size 128k;
client_header_buffer_size 64k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 16k;
proxy_buffers 32 16k;
proxy_busy_buffers_size 64k;
और मैं इसे निम्नलिखित बैश स्क्रिप्ट का उपयोग करके चलाता हूं:
docker run -ti -d -p 80:80 -v /home/antoineb/Docker/images/nginxproxy/virtualhosts:/etc/nginx/sites-enabled --name nginxproxy nginxproxy /bin/bash
मेरे पास एक /home/antoineb/Docker/images/nginxproxy/virtualhosts
है मेरे होस्ट पर फ़ोल्डर जिसमें निम्न default
शामिल है फ़ाइल :
server {
listen 80;
server_name siteZ.com;
location / {
proxy_pass http://apache22php53:80;
}
}
server {
listen 80;
server_name siteA.com;
location / {
proxy_pass http://apache24php56:80;
}
}
server {
listen 80;
server_name siteB.com;
location / {
proxy_pass http://apache24php56:80;
}
}
अपाचे 2.2 + PHP 5.3 छवि
डॉकरफाइल :
FROM debian:wheezy
MAINTAINER AntoineB version: 0.1
RUN apt-get update
RUN echo "deb http://packages.dotdeb.org squeeze all" > /etc/apt/sources.list.d/dotdeb_squeeze.list
RUN echo "deb-src http://packages.dotdeb.org squeeze all" >> /etc/apt/sources.list.d/dotdeb_squeeze.list
RUN echo "deb http://ftp.debian.org/debian/ squeeze main contrib non-free" >> /etc/apt/sources.list.d/dotdeb_squeeze.list
RUN echo "Package: *php*" > /etc/apt/preferences.d/php53.pref
RUN echo "Pin: release o=packages.dotdeb.org,n=squeeze" >> /etc/apt/preferences.d/php53.pref
RUN echo "Pin-Priority: 989" >> /etc/apt/preferences.d/php53.pref
RUN apt-get update && \
apt-get install -y --force-yes \
apache2 \
php5 \
php5-curl \
php5-gd \
php5-mysql \
nano
RUN a2enmod \
php5 \
rewrite
ENV APACHE_RUN_USER www-data
ENV APACHE_RUN_GROUP www-data
ENV APACHE_LOG_DIR /var/log/apache2
ENV APACHE_LOCK_DIR /var/lock/apache2
ENV APACHE_PID_FILE /var/run/apache2.pid
EXPOSE 80
EXPOSE 443
CMD /usr/sbin/apache2ctl -D FOREGROUND
मैं इसे निम्न स्क्रिप्ट का उपयोग करके लॉन्च कर रहा हूं:
docker run -ti -d -p 2253:80 -v /home:/home -v /home/antoineb/Docker/images/apache22php53/virtualhosts:/etc/apache2/sites-enabled --name apache22php53 apache22php53 /bin/bash
मेरी वेबसाइटें /home/website.com/www में संग्रहित हैं, और मेरे अपाचे वर्चुअलहोस्ट होस्ट पर /home/antoineb/Docker/images/apache22php53/virtualhosts
में संग्रहीत हैं। ।
अपाचे 2.4 + PHP 5.6.9 छवि
डॉकरफाइल :
FROM debian:jessie
MAINTAINER AntoineB version: 0.1
RUN apt-get update && \
apt-get install -y --force-yes \
apache2 \
php5 \
php5-curl \
php5-gd \
php5-mysql \
nano
RUN a2enmod \
php5 \
rewrite
ENV APACHE_RUN_USER www-data
ENV APACHE_RUN_GROUP www-data
ENV APACHE_LOG_DIR /var/log/apache2
ENV APACHE_LOCK_DIR /var/lock/apache2
ENV APACHE_PID_FILE /var/run/apache2.pid
EXPOSE 80
EXPOSE 443
CMD /usr/sbin/apache2ctl -D FOREGROUND
मेरी चल रही स्क्रिप्ट:
docker run -ti -d -p 2456:80 -v /home:/home -v /home/antoineb/Docker/images/apache24php56/virtualhosts:/etc/apache2/sites-enabled --name apache24php56 apache24php56 /bin/bash
फिर से, मेरी वेबसाइटें /home/website.com/www में संग्रहीत हैं, और मेरे अपाचे वर्चुअलहोस्ट होस्ट पर /home/antoineb/Docker/images/apache24php56/virtualhosts
में संग्रहीत हैं। ।