Uma semana depois, consegui fazê-lo funcionar, mas de uma maneira diferente. Parei de brincar com o host e comecei a aprender como o Docker pode salvar minha vida.
Este post me deu a chave: Docker - Execute o Apache no host e no contêiner de diferentes sites
Minha iniciática lida sobre o docker foi esta: Desenvolvimento Web PHP com Docker
Resumindo, não preciso instalar o apache2.2 & PHP5.3 no meu servidor host, eu posso ter um contêiner isolado onde eu possa instalar qualquer coisa que eu precise (geralmente um serviço) e esquecer sobre possíveis incompatibilidades com a versão do sistema operacional host. O Docker gerencia tudo isso. Então eu posso ter um container com o apache 2.2 + PHP 5.3 como seria em um sistema operacional squeeze debian. Outro container com o apache 2.2 + PHP 5.4 como seria em um Wheezy, outro com o apache 2.4 + PHP7.0 como em stretch e assim por diante. Tudo funcionando como o 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 o apache / nginx no host, ele pode estar em um container também.
O jeito do docker é ter cada (micro) serviço em um container, assim você pode ter o mariaDB em outro container, etc.
Minhas etapas (resumidas): ( não posso postar mais do que links, quando obtiver reputação suficiente vou editar e adicioná-los )
0 - Leia sobre o docker (quanto mais, melhor): como criar imagens com o Dockerfile , melhores práticas , rede dentro do docker, ...
1 - Instalar o Docker: siga o guia oficial sempre.
2 - Crie um diretório com o nome da sua imagem futura (/ home / user / docker / images / apache22php53, por exemplo), crie o seu Dockerfile e configs (virtualhostconf neste caso) meu Dockerfile :
FROM debian:squeeze
LABEL maintainer="[email protected]"
# 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 da pasta 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 - inicie 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. Estamos montando (-v) também a raiz do nosso documento hospedeiro (/ var / www / html) na raiz do documento container-apache (em squeeze é / var / www). O está configurando também o nome do contêiner (--name).
5 - ssh para o 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ê deverá ver seu apache sendo executado com o PHP5.3 carregado.
Este é o básico. Depois disso, você aprenderá sobre como montar dados de 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 containers, etc.