Files
BaC/content/2019-06-30_LXC,-Docker-et-autres-joyeusetés-(partie-3-sur-beaucoup-potentiellement…).md
2025-02-27 12:52:48 +01:00

3.5 KiB
Raw Permalink Blame History

+++

title = "LXD/LXC, Docker et autres joyeusetés (partie 3 sur beaucoup potentiellement…)" date = 2019-06-30 draft = true [taxonomies] tags = [ "docker", "lxc", "système" ] +++ Jaurais aussi pu appeler ça : 1 fille, 2 garçons, 3 possibilités. Ah, cest donc ça un titre putaclic…

Coucou mes rondoudous, cest Tonton Bingo.

Comme tu le sais probablement, ça fait un moment que je tourne en rond réfléchis à comment je vais faire évoluer mon auto-hébergement. Et même si je suis maintenant à peu près persuadé que la meilleure solution est LXC+Ansible, ça nempêche pas d'étudier les alternatives le plus sérieusement du monde. Et ça permet éventuellement de faire des choses intéressantes.

Aujourd'hui donc, je vais mattaquer à un problème autour duquel je tourne depuis [un bon moment|/post/2018/08/16/LXD/LXC%2C-Docker-et-autres-joyeuset%C3%A9s-%28partie-2-sur-beaucoup-potentiellement%E2%80%A6%29] : quelle est la meilleure solution pour faire tourner des applis PHP dans Docker ?

Alors, oui, jai déjà abordé le sujet, mais de façon assez générique. Je voulais voir ''concrètement'' comment on pourrait faire en prenant des exemples de la vie réelle. Et même si jai déjà dressé la liste des avantages/inconvénients de chaque méthode, je me suis dit que ce serait intéressant de les vérifier « pour de vrai ».

Donc, oui, il va y avoir de la redite, mais cest pour la bonne cause.

Donc cest quoi en fait une appli PHP ?

Commençons par la base, à savoir comment cest gaullé une appli PHP. Généralement, il y a un serveur de présentation (dans mon cas, ça va être majoritairement du NginX), un serveur dexécution (PHP-FPM) et très souvent une base de données (MariaDB, mais ça peut être autre chose).

Les configurations à base dApache mélangent allègrement présentation et exécution, ce qui nest franchement pas ma tasse de thé (je trouve ça très crade et les conséquences en terme de sécurité et de performance peuvent réellement être inquiétantes). Mais le principe reste toujours le même : quand le client (le navigateur) demande une page '.php', le serveur de présentation va transmettre le chemin de la page en question à PHP-FPM, qui va exécuté lensemble de la pile PHP, puis renvoyer du texte (généralement du HTML ou du JS), après avoir éventuellement interagi avec la base de données.

Deux conséquences à cela :

  1. NginX nest pas conscient quil y a une base de données (cest pas son boulot) ;
  2. NginX et PHP-FPM doivent avoir les mêmes chemins sur le serveur local pour que cela fonctionne (cest le chemin qui est transmis par NginX vers PHP-FPM et pas le fichier à exécuter lui-même).

Il arrive également assez souvent que lapplication PHP ait besoin décrire dans des répertoires (fichiers temporaires, compilation de gabarits, téléversement de données, etc…).

Voilà, maintenant quon a clairement établi les règles du jeu, voyons comment on peut empaqueter une application PHP dans du Docker. Pour lexemple, on va utiliser phpBB. Il contient à peu près ce quon peut faire de pire en matière dapplications PHP (base de données, fichiers temporaires, fichiers persistents, etc…).

Solution 1 : conteneurs génériques et répertoire de données

Solution 2 : embarquer lapplication dans les conteneurs (ou solution NextCloud)

Solution 3 : embarquer lapplication dans UN conteneur (ou solution Mastodon)