Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Docker — uruchom Apache na hoście i kontenerze dla różnych witryn

Dzięki odpowiedzi VonC Udało mi się go uruchomić, ale nieznacznie zmieniłem swoją architekturę, w wyniku czego powstały 3 kontenery zamiast tylko 1.

Mam jeden kontener dla każdej wersji Apache / PHP i jeden kontener z Nginx jako reverse proxy. Myślę, że możesz łatwo dostosować to, aby zainstalować Nginx na hoście i zmienić jego konfigurację, aby pasowała do architektury, którą opisałem w moim pytaniu.

Zauważ, że jako nowy w Dockerze i noob związany z administrowaniem systemem Linux, prawdopodobnie są pewne błędy i rzeczy, które nie mają sensu w poniższych skryptach, ale dla mnie to działa. Zapraszam do ulepszenia :)

Obraz odwrotnego serwera proxy Nginx

Plik Dockerfile :

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

Oto przywoływany plik proxy.conf plik :

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;

I uruchamiam go za pomocą następującego skryptu bash :

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

Mam /home/antoineb/Docker/images/nginxproxy/virtualhosts folder na moim hoście, który zawiera następujące default plik :

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;
       }
}

Obraz Apache 2.2 + PHP 5.3

Plik dockerowy :

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

Uruchamiam go za pomocą następującego skryptu :

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

Moje strony internetowe są przechowywane w /home/website.com/www, a moje wirtualne hosty Apache są przechowywane na hoście w /home/antoineb/Docker/images/apache22php53/virtualhosts .

Obraz Apache 2.4 + PHP 5.6.9

Plik dockerowy :

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

Mój uruchomiony skrypt :

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

Ponownie, moje strony internetowe są przechowywane w /home/website.com/www, a wirtualne hosty Apache są przechowywane na hoście w /home/antoineb/Docker/images/apache24php56/virtualhosts .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SELECT COUNT(*) działa wolno, nawet z klauzulą ​​where

  2. Zapisywanie zmian w SlickGrid za pomocą php

  3. Jak działa MySQL CASE?

  4. jak wepchnąć dane Google Analytics do tabel mysql

  5. MySQL INSERT ....ON DUPLICATE UPDATE - Dodaje jeden do autoinkrementacji