Uma semana depois, consegui fazê-lo funcionar, mas de uma maneira diferente. Parei de mexer com o host e comecei a aprender como o Docker pode salvar minha vida.
Esta postagem me deu a chave:
Docker - Execute o Apache no host e no contêiner para diferentes sites
Minha leitura inicial sobre docker foi esta: PHP Web Development with Docker
Resumindo, não preciso instalar o apache2.2 e o PHP5.3 no servidor host, posso ter um contêiner isolado onde posso instalar tudo o que preciso (geralmente um serviço) e esquecer possíveis incompatibilidades com a versão do SO host. O Docker gerencia tudo. Então, eu posso ter um contêiner com o apache 2.2 + PHP 5.3, como seria em um sistema operacional squeeze debian. Outro contêiner com o apache 2.2 + PHP 5.4 como seria em um Wheezy, outro com o apache 2.4 + PHP7.0 como no stretch e assim por diante. Todos trabalhando ao mesmo tempo e servindo domínios diferentes. Para conseguir isso, faça com que o apache / nginx no host funcione como proxy reverso, redirecionando cada domínio para um contêiner apache-php diferente, graças ao mapeamento da porta do docker. Você nem precisa ter apache / nginx no host, ele também pode estar em um contêiner.
A maneira do docker é ter cada (micro) serviço em um contêiner, para que você possa ter o mariaDB em outro contêiner, etc.
Minhas etapas (resumidas): ( não posso postar mais do que links, quando tiver reputação suficiente, vou editá-las e adicioná-las )
0 - Leia sobre o docker (quanto mais, melhor): como criar imagens com o Dockerfile , práticas recomendadas , redes dentro do docker, ...
1 - Instale o Docker: siga sempre o guia oficial .
2 - Crie um diretório com o nome da sua imagem futura (/ home / user / docker / images / apache22php53, por exemplo), por dentro, crie seu Dockerfile e configs (virtualhost conf neste caso) meu Dockerfile foi:
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 do diretório, coloque seu arquivo conf virtualhost dentro do caminho: conf / apache / virtualhosts /
3 - construa a imagem com (cd anterior dentro do diretório):
sudo docker build -t apache22php53 .
4 - lance o contêiner com:
sudo docker run -ti -d -p 2253:80 -v /var/www/html:/var/www --name apache22php53 apache22php53 /bin/bash
O Docker mapeará a porta do host (-p) 2253 para a porta do contêiner 80. Também estamos montando (-v) a raiz do documento host (/ var / www / html) na raiz do documento apache-container (no squeeze é / var / www). Também estão definindo o nome do contêiner (--name).
5 - ssh para contêiner com:
sudo docker exec -ti apache22php53 /bin/bash
e inicie o apache, se necessário (como no meu caso). "exit" para voltar ao host cli.
6 - navegue até ... yourvhostdomain.com:2253 e você verá o seu apache rodando com o PHP5.3 carregado.
Este é o básico. Depois disso, você aprenderá sobre como montar dados do host (www, bancos de dados etc.) dentro de contêineres, como os contêineres podem se comunicar entre eles e com o host (IPs privados na rede docker), como usar o docker-compose para configurar vários contêineres de uma só vez (web, banco de dados etc.), proxy reverso para vários servidores web de contêineres etc.