Danke an VonCs Antwort Ich habe es geschafft, es zum Laufen zu bringen, aber ich habe meine Architektur leicht geändert, was zu 3 Containern statt nur einem führte.
Ich habe einen Container für jede Apache / PHP-Version und einen Container mit Nginx als Reverse-Proxy. Ich denke, Sie können dies leicht anpassen, um Nginx auf dem Host zu installieren und seine Konfiguration an die Architektur anzupassen, die ich in meiner Frage beschrieben habe.
Beachten Sie, dass es in den folgenden Skripten wahrscheinlich einige Fehler und Dinge gibt, die keinen Sinn ergeben, da ich neu bei Docker und ein Noob in Bezug auf die Linux-Systemverwaltung bin, aber es funktioniert für mich. Fühlen Sie sich frei, es zu verbessern :)
Nginx-Reverse-Proxy-Image
Die Dockerdatei :
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"]
Hier ist die referenzierte proxy.conf
Datei :
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;
Und ich führe es mit dem folgenden Bash-Skript aus:
docker run -ti -d -p 80:80 -v /home/antoineb/Docker/images/nginxproxy/virtualhosts:/etc/nginx/sites-enabled --name nginxproxy nginxproxy /bin/bash
Ich habe einen /home/antoineb/Docker/images/nginxproxy/virtualhosts
Ordner auf meinem Host, der den folgenden default
enthält Datei :
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;
}
}
Apache 2.2 + PHP 5.3-Image
Dockerfile :
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
Ich starte es mit dem folgenden Skript:
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
Meine Websites sind unter /home/website.com/www gespeichert, und meine virtuellen Apache-Hosts sind auf dem Host unter /home/antoineb/Docker/images/apache22php53/virtualhosts
gespeichert .
Apache 2.4 + PHP 5.6.9-Image
Dockerfile :
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
Mein laufendes Skript :
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
Auch hier sind meine Websites unter /home/website.com/www gespeichert, und meine virtuellen Apache-Hosts sind auf dem Host unter /home/antoineb/Docker/images/apache24php56/virtualhosts
gespeichert .