sql >> Databasteknik >  >> RDS >> Mysql

Docker - Kör Apache på värd och behållare för olika webbplatser

Tack vare VonC:s svar Jag lyckades få det att fungera men jag ändrade min arkitektur något, vilket resulterade i 3 behållare istället för bara 1.

Jag har en behållare för varje Apache / PHP-version och en behållare med Nginx som omvänd proxy. Jag tror att du enkelt kan anpassa detta för att installera Nginx på värden och ändra dess konfiguration för att matcha arkitekturen jag beskrev i min fråga.

Observera att eftersom jag är ny på Docker och en noob när det gäller Linux-systemadministration, finns det förmodligen några misstag och saker som inte är meningsfulla i följande skript, men det fungerar för mig. Förbättra det gärna :)

Nginx Reverse Proxy-bild

Dockerfilen :

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"]

Här är den refererade proxy.conf fil :

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;

Och jag kör det med följande bash-skript:

docker run -ti -d -p 80:80 -v /home/antoineb/Docker/images/nginxproxy/virtualhosts:/etc/nginx/sites-enabled --name nginxproxy nginxproxy /bin/bash

Jag har en /home/antoineb/Docker/images/nginxproxy/virtualhosts mapp på min värd som innehåller följande default fil :

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-bild

Dockerfil :

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

Jag startar det med följande 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

Mina webbplatser lagras i /home/website.com/www, och mina virtuella apache-värdar lagras på värden i /home/antoineb/Docker/images/apache22php53/virtualhosts .

Apache 2.4 + PHP 5.6.9-bild

Dockerfil :

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

Mitt körskript :

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

Återigen, mina webbplatser lagras i /home/website.com/www, och mina virtuella apache-värdar lagras på värden i /home/antoineb/Docker/images/apache24php56/virtualhosts .



  1. Påverkar ordningen på villkoren i en WHERE-sats MySQL-prestanda?

  2. UTF-8-utgång med CakePHP

  3. Överträdelse av begränsningar när en till många-relation består

  4. Ansluter SQL Server till Oracle