Una semana después logré hacerlo funcionar pero de una manera diferente. Dejé de jugar con el anfitrión y comencé a aprender cómo Docker puede salvarme la vida.
Esta publicación me dio la clave:
Docker: ejecutar Apache en el host y el contenedor para diferentes sitios web
Mi lectura inicial sobre Docker fue esta: Desarrollo web PHP con Docker
En resumen, no necesito instalar apache2.2 y PHP5.3 en mi servidor host, puedo tener un contenedor aislado donde puedo instalar todo lo que necesito (generalmente un servicio) y olvidarme de posibles incompatibilidades con la versión del sistema operativo host. Docker lo maneja todo. Entonces puedo tener un contenedor con apache 2.2 + PHP 5.3 como lo estaría en un sistema operativo Debian Squeeze. Otro contenedor con apache 2.2 + PHP 5.4 como estaría en un Wheezy, otro con apache 2.4 + PHP7.0 como en estiramiento y así sucesivamente. Todos trabajando al mismo tiempo y sirviendo diferentes dominios. Para lograr esto último, haga que apache / nginx en el host funcione como proxy inverso que redirige cada dominio a un contenedor apache-php diferente gracias al mapeo de puertos docker. Ni siquiera necesita tener apache / nginx en el host, también puede estar en un contenedor.
La forma de acoplamiento es tener cada (micro) servicio en un contenedor, para que pueda tener mariaDB en otro contenedor, etc.
Mis pasos (resumidos): ( No puedo publicar más que en enlaces, cuando tenga suficiente reputación los editaré y los agregaré )
0 - Lea sobre Docker (cuanto más mejor): cómo construir imágenes con el Dockerfile , mejores prácticas , redes dentro de Docker, ...
1 - Instalar Docker: siga siempre la guía oficial .
2 - Cree un directorio con su futuro nombre de imagen (/ home / user / docker / images / apache22php53 eg), dentro cree su Dockerfile y configs (virtualhost conf en este caso) mi Dockerfile fue:
FROM debian:squeeze
LABEL maintainer="raguchi@gmail.com"
# squeeze new mirrors
RUN echo "deb http://archive.debian.org/debian/ squeeze contrib main non-free" > /etc/apt/sources.list
RUN apt-get update
# Common packages
RUN apt-get update && \
apt-get install -y --force-yes curl wget
RUN apt-get update && \
apt-get install -y --force-yes \
apache2 \
libapache2-mod-php5 \
ntp \
php5 \
php5-curl \
php5-gd \
php5-ldap \
php5-mcrypt \
php5-mysql \
vim
RUN a2enmod \
php5 \
rewrite \
ssl
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
# RUN chown -R www-data:www-data /var/www
COPY conf/apache/virtualhosts /etc/apache2/sites-enabled
# disable default virtualhost
RUN a2dissite 000-default
EXPOSE 80
EXPOSE 443
CMD ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]
Dentro del directorio, coloque su archivo conf virtualhost dentro de la ruta: conf / apache / virtualhosts /
3 - construye la imagen con (cd anterior dentro del directorio):
sudo docker build -t apache22php53 .
4 - inicie el contenedor con:
sudo docker run -ti -d -p 2253:80 -v /var/www/html:/var/www --name apache22php53 apache22php53 /bin/bash
Docker asignará (-p) el puerto de host 2253 al puerto de 80 contenedores. Estamos montando (-v) también nuestra raíz del documento host (/ var / www / html) en la raíz del documento apache-container (en compresión es / var / www). También están configurando el nombre del contenedor (--name).
5 - ssh al contenedor con:
sudo docker exec -ti apache22php53 /bin/bash
e inicie apache si es necesario (como en mi caso). "salir" para volver al host cli.
6 - navegue a ... yourvhostdomain.com:2253 y debería ver su apache ejecutándose con PHP5.3 cargado.
Esto es lo básico. Después de eso, aprenderá cómo montar datos de host (www, bases de datos, etc.) dentro de contenedores, cómo los contenedores pueden comunicarse entre ellos y con el host (IP privadas en la red de acopladores), cómo usar docker-compose para configurar múltiples contenedores a la vez (web, base de datos, etc.), proxy inverso para servidores web de múltiples contenedores, etc.