sql >> Database teknologi >  >> RDS >> Mysql

Docker - Kør Apache på vært og container til forskellige websteder

Tak til VonC's svar Det lykkedes mig at få det til at fungere, men jeg ændrede en smule min arkitektur, hvilket resulterede i 3 containere i stedet for kun 1.

Jeg har en container for hver Apache / PHP version, og en container med Nginx som omvendt proxy. Jeg tror, ​​du nemt kan tilpasse dette til at installere Nginx på værten og ændre dens konfiguration, så den matcher den arkitektur, jeg beskrev i mit spørgsmål.

Bemærk, at da jeg er ny til Docker, og en noob med hensyn til Linux-systemadministration, er der sikkert nogle fejl og ting, der ikke giver nogen mening i de følgende scripts, men det virker for mig. Du er velkommen til at forbedre det :)

Nginx Reverse Proxy-billede

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

Her er den refererede 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;

Og jeg kører det ved at bruge følgende bash-script:

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

Jeg har en /home/antoineb/Docker/images/nginxproxy/virtualhosts mappe på min vært, der indeholder følgende 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-billede

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

Jeg starter det ved at bruge følgende script :

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

Mine websteder er gemt i /home/website.com/www, og mine apache virtualhosts er gemt på værten i /home/antoineb/Docker/images/apache22php53/virtualhosts .

Apache 2.4 + PHP 5.6.9-billede

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

Mit kørende script :

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

Igen er mine websteder gemt i /home/website.com/www, og mine apache virtualhosts er gemt på værten i /home/antoineb/Docker/images/apache24php56/virtualhosts .



  1. Hvordan installeres localdb separat?

  2. Den parametriserede forespørgsel ..... forventer parameteren '@units', som ikke blev leveret

  3. Kør Oracle Forms som selvstændig uden browser

  4. Hvordan får man den numeriske del fra en streng ved hjælp af T-SQL?