Une semaine plus tard, j'ai réussi à le faire fonctionner mais d'une manière différente. J'ai arrêté de jouer avec l'hôte et j'ai commencé à apprendre comment Docker peut me sauver la vie.
Ce message m'a donné la clé:
Docker - Exécuter Apache sur l'hôte et le conteneur pour différents sites Web
Ma lecture iniciatique sur Docker était celle-ci: Développement Web PHP avec Docker
En résumé, je n'ai pas besoin d'installer apache2.2 et PHP5.3 sur mon serveur hôte, je peux avoir un conteneur isolé où je peux installer tout ce dont j'ai besoin (généralement un service) et oublier les incompatibilités possibles avec la version du système d'exploitation hôte. Docker gère tout cela. Je peux donc avoir un conteneur avec apache 2.2 + PHP 5.3 comme ce serait dans un OS Debian Squeeze. Un autre conteneur avec apache 2.2 + PHP 5.4 comme ce serait dans un Wheezy, un autre avec apache 2.4 + PHP7.0 comme dans Stretch et ainsi de suite. Tous travaillent en même temps et desservent différents domaines. Pour atteindre ce dernier, faites apache / nginx sur l'hôte pour fonctionner comme proxy inverse en redirigeant chaque domaine vers un conteneur apache-php différent grâce au mappage de port docker. Vous n'avez même pas besoin d'avoir apache / nginx sur l'hôte, il peut également être dans un conteneur.
La méthode docker consiste à avoir chaque (micro) service dans un conteneur, afin que vous puissiez avoir mariaDB dans un autre conteneur, etc.
Mes étapes (résumées): ( je ne peux pas poster plus que sur des liens, quand j'aurai assez de réputation je les éditerai et les ajouterai )
0 - Lisez à propos de docker (le plus sera le mieux): comment créer des images avec le Dockerfile , les meilleures pratiques , la mise en réseau au sein du docker, ...
1 - Installez Docker: suivez toujours le guide officiel .
2 - Créez un répertoire avec votre futur nom d'image (/ home / user / docker / images / apache22php53 par exemple), à l'intérieur créez votre Dockerfile et configs (virtualhost conf dans ce cas) mon Dockerfile était:
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"]
Dans le répertoire, placez votre fichier de configuration virtualhost dans le chemin: conf / apache / virtualhosts /
3 - construire l'image avec (cd précédent dans le répertoire):
sudo docker build -t apache22php53 .
4 - lancez le conteneur avec:
sudo docker run -ti -d -p 2253:80 -v /var/www/html:/var/www --name apache22php53 apache22php53 /bin/bash
Docker mappera (-p) le port hôte 2253 au port de conteneur 80. Nous montons (-v) également notre racine de document hôte (/ var / www / html) dans la racine du document apache-container (dans squeeze est / var / www). Ils définissent également le nom du conteneur (--name).
5 - ssh to container avec:
sudo docker exec -ti apache22php53 /bin/bash
et lancez apache si nécessaire (comme dans mon cas). "exit" pour revenir à l'hôte cli.
6 - accédez à ... votredomaine.com: 2253 et vous devriez voir votre apache fonctionner avec PHP5.3 chargé.
Ce sont les bases. Après cela, vous apprendrez comment monter des données d'hôte (www, bases de données, etc.) à l'intérieur de conteneurs, comment les conteneurs peuvent communiquer entre eux et avec l'hôte (adresses IP privées dans le réseau de docker), comment utiliser docker-compose pour configurer plusieurs conteneurs à la fois (Web, base de données, etc.), proxy inverse pour plusieurs serveurs Web de conteneurs, etc.