Met dank aan VonC's antwoord Het is me gelukt om het werkend te krijgen, maar ik heb mijn architectuur enigszins gewijzigd, wat resulteerde in 3 containers in plaats van slechts 1.
Ik heb één container voor elke Apache / PHP-versie en één container met Nginx als reverse proxy. Ik denk dat je dit gemakkelijk kunt aanpassen om Nginx op de host te installeren en de configuratie ervan kunt aanpassen aan de architectuur die ik in mijn vraag heb beschreven.
Merk op dat aangezien ik nieuw ben bij Docker en een noob op het gebied van Linux-systeembeheer, er waarschijnlijk enkele fouten en dingen zijn die nergens op slaan in de volgende scripts, maar het werkt voor mij. Voel je vrij om het te verbeteren :)
Nginx Reverse Proxy-afbeelding
Het Dockerbestand :
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 is de verwezen proxy.conf
bestand :
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;
En ik voer het uit met het volgende 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
Ik heb een /home/antoineb/Docker/images/nginxproxy/virtualhosts
map op mijn host die de volgende default
. bevat bestand :
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 afbeelding
Dockerbestand :
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
Ik start het met het volgende 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
Mijn websites worden opgeslagen in /home/website.com/www, en mijn apache virtualhosts worden opgeslagen op de host in /home/antoineb/Docker/images/apache22php53/virtualhosts
.
Apache 2.4 + PHP 5.6.9 afbeelding
Dockerbestand :
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
Mijn lopende 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
Nogmaals, mijn websites worden opgeslagen in /home/website.com/www, en mijn apache virtualhosts worden opgeslagen op de host in /home/antoineb/Docker/images/apache24php56/virtualhosts
.