Благодарение на отговора на VonC Успях да го накарам да работи, но леко промених архитектурата си, което доведе до 3 контейнера вместо само 1.
Имам един контейнер за всяка версия на Apache / PHP и един контейнер с Nginx като обратен прокси. Мисля, че можете лесно да адаптирате това, за да инсталирате Nginx на хоста и да промените конфигурацията му, за да съответства на архитектурата, която описах във въпроса си.
Имайте предвид, че тъй като съм нов в Docker и съм новак по отношение на системното администриране на Linux, вероятно има някои грешки и неща, които нямат никакъв смисъл в следващите скриптове, но при мен работи. Чувствайте се свободни да го подобрите :)
Обратно прокси изображение на Nginx
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"]
Ето посочения proxy.conf
файл :
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;
И го стартирам с помощта на следния bash скрипт:
docker run -ti -d -p 80:80 -v /home/antoineb/Docker/images/nginxproxy/virtualhosts:/etc/nginx/sites-enabled --name nginxproxy nginxproxy /bin/bash
Имам /home/antoineb/Docker/images/nginxproxy/virtualhosts
папка на моя хост, която съдържа следния default
файл :
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 изображение
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
Стартирам го със следния скрипт:
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
Моите уебсайтове се съхраняват в /home/website.com/www, а виртуалните хостове на apache се съхраняват на хоста в /home/antoineb/Docker/images/apache22php53/virtualhosts
.
Apache 2.4 + PHP 5.6.9 изображение
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
Моят работещ скрипт :
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
Отново моите уебсайтове се съхраняват в /home/website.com/www, а моите apache virtualhosts се съхраняват на хоста в /home/antoineb/Docker/images/apache24php56/virtualhosts
.