Cet exemple peut facilement s'adapter pour toutes les versions disponibles sous forme de RPM (5.3.3 dans RHEL-6, 5.4.16 dans RHEL-7, 5.4.16 et 5.5.6 dans RHSCL 1.2 ou en utilisant un dépôt tiers).

J'utilise le Dockerfile suivant :

FROM centos:6
RUN yum -y update && yum clean all
RUN yum -y install php-fpm php-mbstring php-mysql php-gd && yum clean all
RUN sed -e 's/127.0.0.1:9000/9000/' \
        -e '/allowed_clients/d' \
        -e '/catch_workers_output/s/^;//' \
        -e '/error_log/d' \
        -i /etc/php-fpm.d/www.conf
RUN mkdir -p /var/www/html
EXPOSE 9000
ENTRYPOINT /usr/sbin/php-fpm --nodaemonize

Installation :

  • yum install permet de récupérer les paquets binaires disponibles, la liste des extensions est à adapter aux besoins
Dossier des scripts :
  • le dossier /var/www/html utilisé dans l'exemple est à adapté en fonction de l'emplacement des applications

Description des changements de la configuration du pool fpm :

  • listen = 9000 pour écouter sur toutes les interfaces
  • suppression de listen.allowed_clients pour autoriser les connexions depuis l'extérieur du container
  • suppression de l'error_log pour utiliser la journalisation globale
  • activation de catch_workers_ouput pour que le server principal récupère et trace les erreurs des pools

Création du container :

docker build -t fpm53 .

Lancement du container :

docker run -v /var/www/html:/var/www/html -p 127.0.0.1:9003:9000 fpm53

A noter : mappage du dossier /var/www/html et du port 9000 (du container) sur le port 9003 (de l'hote)

Conclusion :

Même si je suis un fervent adepte des Software Collections, en leur absence, on dispose très simplement d'une version opérationnelle de PHP 5.3.3 sur une distribution récente (testé sous Fedora 20) en bénéficiant de l'utilisation des dépôts officiels.