Un super éléphant

Comment dynamiser votre container Docker PHP

Chaque projet a ses propres caractéristiques, ses propres extensions. Si entre chaque client vous ne faites qu’ajouter des choses sur votre container, il va finir pas être immense. Nous allons voir comment faire pour avoir une config pour votre client, sans avoir une image pour chacun d’entre eux. Une simple image Docker PHP ne sera pas suffisante.

Concept

Nous allons tout simplement lancer un script au démange de container pour installer les dépendances du client. Nous partirons d’une image de base kiora/tools. C’est une image PHP avec des extensions, sudo, un utilisateur, composer… (venez ici pour voir le détail).

Mais c’est surtout un autre projet qui va beaucoup nous simplifier la tâche docker-php-exetention-installer. Ce projet permet d’installer très simplement une extension Docker.

install-php-extensions yaml redis

Lancement d’un script au démarrage du container

Nous allons utiliser la même technique que Utiliser un mot de passe redis via docker-compose, le lancement d’une commande au démarrage de container.

    tools:
        image: kiora/tools:latest
        ports:
            - 3000:3000
        volumes: 
            - ./${CLIENT}.sh:/usr/local/bin/php_command
        command: php_command
        restart: always

Cette image expose le port 3000, pour les projets front.
Nous allons monter le script de notre client et le lancer au démarrage du container. Cela va ralentir le 1er démarrage, car il y aura l’installation des dépendances supplémentaire.

Voici un exemple de script (mon_client.sh):

sudo -E /bin/bash /usr/local/bin/install-php-extensions yaml redis
sudo npm install -g mjml 
/init.sh

Nous allons installer l’extension yaml et redis, une dépendance npm puis lancer le script initial de l’image.

Trop cool, notre container Docker PHP a deux extensions supplémentaires !

chevron_left
chevron_right

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Commentaire
Nom
E-mail
Site