Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Docker – Führen Sie Apache auf Host und Container für verschiedene Websites aus

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 .