Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 30/06/2025, à 17:00

jlba

Docker Lamp

Bonjour à tous,

Je développe des sites web. Je réfléchis à installer Docker pour pouvoir avoir un serveur lamp avec plusieurs versions de php. Juste un point qui n'est pas très clair : où je mets mes scripts de sites ? J'imagine qu'il faut des directories différents selon la version de php utilisée. De même, comment gérer les vhosts si j'utilise Apache comme serveur web ?

D'avance merci pour vos conseils, liens de tutos etc...

Hors ligne

#2 Le 02/07/2025, à 08:49

jepassaitparla

Re : Docker Lamp

Bonjour,
docker ça peut être très utile, certes, mais si ton objectif c'est juste de "jongler" avec plusieurs versions de php tu n'en n'a pas besoin.
un serveur web peut tout à fait gérer différentes versions de php.
en gros tu installe les versions de php que tu veux et tu indique à apache la version de php que tel ou tel site devra utiliser.

exemple ici: Comment exécuter plusieurs Versions PHP...
(l'exemple est un peu vieux en ce qui concerne les versions de php, à adapter)

sinon pour utiliser docker "proprement" intègre l'idée qu'il "faut" un container par fonction.
donc un container apache (sans le code de ton site), un container php (avec le code de ton site), un container base de données, etc...
et lancer tout ça avec des containers qui communiquent entre eux (docker compose est pensé pour faciliter cette étape).

pour chacun de ces containers tu peux définir un volume, c'est à dire un dossier sur ton ordinateur qui sera monté au démarrage du container.
Les données dans ces volumes seront persistantes contrairement aux container dont les données sont  volatiles (supprimées à l'extinction du container).

bref à mon humble avis: docker c'est très bien mais implique des contraintes et un apprentissage qui me semblent disproportionné pour ton objectif.
ce n'est que mon avis.
Bonne continuation.

Hors ligne

#3 Le 02/07/2025, à 09:31

iznobe

Re : Docker Lamp

Bonjour , la solution la plus simple , est à mon avis la section 1.3 de la DOC : https://doc.ubuntu-fr.org/php#ajout_d_u … ion_de_php
qui dis clairement qu ' il faut éviter tout ce qui implique d' ajouter le PPA d ' ondrej sury . comme indiqué dans le post précedent ...


retour COMPLET et utilisable de commande  |  script montage partitions

MSI Z490A-pro , i7 10700 , 32 GB RAM .

Hors ligne

#4 Le 02/07/2025, à 11:36

krodelabestiole

Re : Docker Lamp

effectivement, le PPA d'ondrej sury pose systématiquement des problèmes (système cassé à la moindre mise à jour majeure), ce forum en était rempli (cause de la plupart des sujets concernant LAMP) avant qu'on explique pourquoi on déconseille son utilisation.

docker utilise un paradigme particulier, qui consiste à utiliser un container par service, avec son propre serveur.
ça permet de faire cohabiter différents outils utilisant différents serveurs, versions de PHP, voire technologies différentes, nodeJS, SSG, etc.
on configure donc généralement un seul vhost par serveur.

dis-en peut-être plus ce que tu souhaites mettre en place : c'est pour du dev ou de la production ? de quels services s'agit-il ?

Hors ligne

#5 Le 02/07/2025, à 11:42

iznobe

Re : Docker Lamp

jlba a écrit :

Je développe des sites web.

c' est des tests de dev / MAJ je suppose donc , pas du tout de la prod .


retour COMPLET et utilisable de commande  |  script montage partitions

MSI Z490A-pro , i7 10700 , 32 GB RAM .

Hors ligne

#6 Le 02/07/2025, à 13:16

jepassaitparla

Re : Docker Lamp

je vous trouve un peu sévère avec la gestion des dépôts d'ondrej mais soit. smile
ça ne me parait pas si difficile de gérer des paquets avec des noms du type php7.4, php8.2, php8.3 (et toutes leurs extensions bien entendu).

bref ce n'est pas forcément le sujet.
La demande est de gérer plusieurs version de php sur le même système.

Je ne vois que quatre alternatives (il y en a peut-être d'autre)

1- plusieurs version de php sur la machine.
  plusieurs méthodes possibles: dépôt d'ondrej / phpbrew / compiler depuis les sources ...
  et oui bien sûr il faudra regarder un peu ce qui se passe sur son système

2- un outil de type plesk, cpanel, etc
   C'est un peu "usine à gaz à clics" (et certains sont payants, pas libres) mais ça supporte très bien plusieurs versions de php (et on peut changer la version d'un site "à la volée").

3- la "dockerisation" du site web
   Là je maintiens c'est génial mais pas si simple à mettre en oeuvre (sauf effectivement si on parle d'un docker wordpress "tout fait", et encore)

4- une machine virtuelle Lamp par version de php dont tu as besoin.
   Pas besoin d'un ordi ultra puissant, pas obligé de lancer toutes les VM en même temps
   tu peux dupliquer ton code et installer la version de php adéquate dans chaque VM


Mais je suis entièrement d'accord avec les intervenants ci-dessus: plus d'informations aiderait à comprendre le besoin.

Hors ligne

#7 Le 02/07/2025, à 15:51

jlba

Re : Docker Lamp

jepassaitparla a écrit :

Bonjour,
docker ça peut être très utile, certes, mais si ton objectif c'est juste de "jongler" avec plusieurs versions de php tu n'en n'a pas besoin.
un serveur web peut tout à fait gérer différentes versions de php.
en gros tu installe les versions de php que tu veux et tu indique à apache la version de php que tel ou tel site devra utiliser.

Merci de ta réponse. J'ai envisagé Docker car c'est la réponse qu'on m'avait fait dans un autre fil de discussion. Et ça ne me dérange pas d'apprendre. J'ai juste besoin de comprendre comment gérer les volumes pour que chaque site chope la bonne version de php.

Hors ligne

#8 Le 02/07/2025, à 16:30

jlba

Re : Docker Lamp

iznobe a écrit :
jlba a écrit :

Je développe des sites web.

c' est des tests de dev / MAJ je suppose donc , pas du tout de la prod .

Oui.

Hors ligne

#9 Le 02/07/2025, à 16:38

jlba

Re : Docker Lamp

krodelabestiole a écrit :

dis-en peut-être plus ce que tu souhaites mettre en place : c'est pour du dev ou de la production ? de quels services s'agit-il ?

Je veux créer un environnement local de dev web. Lorsque j'étais sur Mac, j'utilisais MAMP qui proposait une interface graphique pour ajouter en quelque clics un projet avec choix de la version php et vhost.

Aujourd'hui, j'installe les versions de dev chez mon hébergeur mais ça suppose une connexion active et ça pose le problème de l'éventuelle indexation des sites de ev par les moteurs de recherche (malgré le noindex nofollow). IL me faut donc pouvoir installer des cms, certains sites étant anciens, ils nécessitent des versions anciennes de php.

Hors ligne

#10 Le 02/07/2025, à 17:30

krodelabestiole

Re : Docker Lamp

l'idée est plutôt de lancer le conteneur de ton choix lorsque tu travailles sur un projet, inutile d'avoir des services qui tournent que tu n'utilises pas.
perso je créée un fichier docker-compose.yml dans chaque projet, mais chacun sa méthode.

j'avais rédigé ce tuto il y a longtemps, c'est pas ce qu'il y a de plus à jour : https://doc.ubuntu-fr.org/docker_lamp
on trouve aussi des tutos sur grafikart : https://grafikart.fr/tutoriels/docker

Hors ligne

#11 Le 02/07/2025, à 17:41

jlba

Re : Docker Lamp

krodelabestiole a écrit :

l'idée est plutôt de lancer le conteneur de ton choix lorsque tu travailles sur un projet, inutile d'avoir des services qui tournent que tu n'utilises pas.
perso je créée un fichier docker-compose.yml dans chaque projet, mais chacun sa méthode.

j'avais rédigé ce tuto il y a longtemps, c'est pas ce qu'il y a de plus à jour : https://doc.ubuntu-fr.org/docker_lamp
on trouve aussi des tutos sur grafikart : https://grafikart.fr/tutoriels/docker

Donc toi tu conseilles Docker ?

(Au passage : est-ce que la date des articles du wiki pourrait être sous le titre pour savoir de suite si c'est à jour ou ancien ? Merci.)

Dernière modification par jlba (Le 02/07/2025, à 17:43)

Hors ligne

#12 Le 02/07/2025, à 18:32

krodelabestiole

Re : Docker Lamp

(pour voir les dates de mise à jour tu peux cliquer sur l'icône en forme d'horloge, à droite, ça donne beaucoup plus d'info que la date du dernier bricolage : https://doc.ubuntu-fr.org/docker_lamp?do=revisions)


moi j'utilise docker et c'est ce que je conseillerais parce que je pense que c'est de toute façon une techno indispensable à connaître quand on fait du web aujourd'hui !
https://forum.ubuntu-fr.org/viewtopic.php?id=2082878
ça permet aussi d'établir un environnement extrêmement portable, sans même avoir à se préoccuper du système sous-jacent.

et même de facilement partager celui-ci, par ex. l'environnement de dev d'ubuntu-fr :
https://gitlab.com/ubuntu-fr/code/ufr-dev-env
ici c'est à jour, tu peux éventuellement suivre les indications pour avoir un exemple (c'est plutôt simple), même si c'est du go et pas du php.
// edit : ah si, le dokuwiki est en PHP, il y a même une base mariadb (et flarum aussi sur la branche flarum, mais celle-ci n'est pas à jour).

encore une fois le paradigme est différent : un service (ou un projet web, donc) = un container.

ici je partage un script qui permet de facilement "dockerifier"n'importe quelle application lamp : https://gitlab.com/crachecode/docker-lamp-app

Dernière modification par krodelabestiole (Le 02/07/2025, à 19:58)

Hors ligne

#13 Le 02/07/2025, à 18:58

krodelabestiole

Re : Docker Lamp

jepassaitparla a écrit :

je vous trouve un peu sévère avec la gestion des dépôts d'ondrej mais soit. smile

fais une petite recherche et tu comprendras pourquoi :
https://www.google.com/search?q=site%3A … nderj+sury
176 sujets, presque autant de systèmes cassés... ça fait des milliers de messages échangés.

jepassaitparla a écrit :

ça ne me parait pas si difficile de gérer des paquets avec des noms du type php7.4, php8.2, php8.3 (et toutes leurs extensions bien entendu).

... et les paquets dont tu n'as pas indiqué le numéro de version se mettront à jour avec le reste du système, mais pas ceux dont tu as indiqué le numéro de version. des versions de PHP essayant de charger des modules inadaptés, des incompréhensions au sujet des différentes versions des fichiers de config et de leurs emplacements, déjà que celui du module apache n'est pas le même que celui de la CLI, ni celui de PHP-FPM...
soit tu n'utilises pas ce PPA depuis longtemps, soit tu es rompu à l'usage d'APT et de PHP et tu ne te rends peut-être pas compte de la difficulté pour un débutant.

APT n'est pas adapté à cet usage. APT permet de maintenir un système à jour, et d'installer une version d'un logiciel avec ses dépendances à la dernière version proposée par les mainteneurs des dépôts associés à une distro en particulier.
inclure le numéro de version dans le nom du paquet (pour installer plusieurs versions simultanément) c'est un hack grossier, et même si cette technique est parfois employée pour certains logiciels un peu particuliers (java par ex.), on ne l'utilise jamais pour des versions mineures. ça mettrait un bordel innommable dans les dépôts et les distros seraient impossibles à maintenir.
ça n'est simplement pas une technique recommandée, parce que ce n'est pas celle voulue par les développeurs (de debian et d'ubuntu en l'occurrence).

en réponse à un sujet proche :
https://forum.ubuntu-fr.org/viewtopic.p … #p22200392

Hors ligne

#14 Le 02/07/2025, à 19:12

krodelabestiole

Re : Docker Lamp

jepassaitparla a écrit :

2- un outil de type plesk, cpanel, etc
   C'est un peu "usine à gaz à clics" (et certains sont payants, pas libres) mais ça supporte très bien plusieurs versions de php (et on peut changer la version d'un site "à la volée").

effectivement, dans le genre usine à gaz... ce sont des outils que des hébergeurs cheap fournissent à leur clients.
on peut ajouter webmin à la liste qui a au moins le mérite d'être libre. mais pareil : ce sont des outils que perso je déconseille fortement (on devient dépendant d'un truc lourdingue qu'on ne trouvera quasi jamais dans un cadre professionnel).


jepassaitparla a écrit :

3- la "dockerisation" du site web
   Là je maintiens c'est génial mais pas si simple à mettre en oeuvre (sauf effectivement si on parle d'un docker wordpress "tout fait", et encore)

il y a une courbe d'apprentissage un peu raide au début.

mais paradoxalement, tu vois la facilité avec laquelle on partage tout un environnement : https://gitlab.com/ubuntu-fr/code/ufr-dev-env
le mode d'emploi est le README, qu'on voit en bas de la page.

et pareil lorsqu'il s'agit de migrer vers une nouvelle machine, c'est fait en 10 minutes.


jepassaitparla a écrit :

4- une machine virtuelle Lamp par version de php dont tu as besoin.
   Pas besoin d'un ordi ultra puissant, pas obligé de lancer toutes les VM en même temps
   tu peux dupliquer ton code et installer la version de php adéquate dans chaque VM

c'est largement aussi complexe que docker et infiniment plus lourd, que ce soit niveau ressources ou logistiquement.
c'est bien pour ça qu'on a inventé les containers (sans même parler de docker, il y a LXC avant).


tu as jeté un œil au lien d'iznoibe ?
1.1 Ajout d'une autre version de PHP
si tu n'aimes pas docker, ni la containerisation, une solution propre serait plutôt du côté de PHPBrew :
https://doc.ubuntu-fr.org/phpbrew
https://grafikart.fr/tutoriels/phpbrew- … sions-1097

néanmoins pour quelqu'un qui se lance sérieusement dans le développement web, docker est une solution incontournable.

Hors ligne

#15 Le 02/07/2025, à 19:35

krodelabestiole

Re : Docker Lamp

le fonctionnement de docker n'est pas si compliqué : on a d'un côté des containers, chacun héberge un service, et de l'autre l'hôte, la machine sur laquelle on bosse.

ces containers sont basés sur des distro linux minimalistes (souvent alpine ou debian-slim), sur lesquelles on passe des commandes, pour installer des logiciels ou les configurer. Ça se fait dans un fichier Dockerfile (qui est donc une liste de commandes, un peu comme un script bash, qui décrit l'image du container).
On peut échanger ce fichier Dockerfile et les images générées sur docker hub par ex., c'est ce que font la plupart des éditeurs d'applications web.
ce qui permet de télécharger des images toutes faites, qui embarquent donc toutes les dépendances (jusqu'au système) pour une application web, ou autre (même yt-dlp, pourquoi pas, comme expliqué ).
et on peut les récupérer et les exécuter n'importe où en une ligne de commande.

- une complexité est la communication entre l'intérieur du container et l'hôte, ou avec un autre container. les containers sont des bacs à sable, c'est comme un firewall géant pour tout (on retrouve aussi ça avec flatpak par ex., et ça assure une certaine sécurité par design).
donc on peut faire correspondre un port interne à un port externe, un répertoire interne à un répertoire externe, passer les variables d'environnement de son choix, etc.

ce qui peut évidemment rendre la ligne de commande assez longue !
d'où l'intérêt du fichier docker-compose.yml qui décrit tout ça en yaml, un format particulièrement lisible !

un seul fichier docker-compose.yml peut d'ailleurs décrire plusieurs containers (mettons par ex. apache, PHP-FPM, mariadb, mailhog, etc. pour un projet complet).
le déploiement d'un environnement complet pour une, voire plusieurs application(s) web peut alors se résumer à la récupération d'un docker-compose.yml (parfois accompagné d'autres fichiers : Dockerfile, fichiers de config destinés à être copiés dans le container, etc.) suivie de la commande :

docker compose up

ça pèse quelques ko à tout casser.

- une autre complexité est que les containers sont réinitialisés à chaque lancement, donc toutes les données qui doivent être persistées, fichiers et bases de données, doivent se trouver ailleurs, généralement sur l'hôte. d'où l'intérêt primordial des correspondances hôte:container (c'est la syntaxe utilisée) décrites juste au-dessus. On ne conserve jamais rien d'utile seulement dans un container !


il faudra que je reformule ça au propre pour éditer la doc https://doc.ubuntu-fr.org/docker
donc si quelque chose n'est pas clair, ou que vous voyez une meilleure façon d'expliquer, surtout n'hésitez pas ! wink


on n'est heureusement pas obligé de tout connaître pour simplement utiliser docker.
et par exemple utiliser PHP en ligne de commande dans la version de son choix avec docker est aussi simple que de se faire un alias :

alias php7.4='docker run -it --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp php:7.4-cli php'

ensuite la première fois qu'on passera la commande php7.4 ça prendra le temps de télécharger l'image avant de l'exécuter, les fois suivantes ce sera quasi instantané (à comparer à une VM...).

Hors ligne

#16 Le 03/07/2025, à 17:00

jlba

Re : Docker Lamp

Merci pour toutes ces infos. J'essaie de résumer pour comprendre...

1. phpbrew :
- installation propre et simplifiée de différente versions de php dans le $HOME
- une seule version active à la fois ; il faut basculer avant de changer de projet (use : temporaire, switch : conservé au démarrage) ;
- tout en ligne de commande.
2. Docker :
- 1 container par service : 1 container par apache + php ou 1 container apache + 1 container par php ? dans ces cas, j'ai un dossier www par php où je crée un sous directory par projet ;
- ou alors je crée un environnement spécifique par projet : un directory par projet avec son dockerfile et son sous directory de volume pour persister ?

Dernière modification par jlba (Le 03/07/2025, à 17:01)

Hors ligne

#17 Le 03/07/2025, à 19:51

krodelabestiole

Re : Docker Lamp

c'est à peu près ça.

jlba a écrit :

- 1 container par service : 1 container par apache + php ou 1 container apache + 1 container par php ?

un container pour apache + un container pour PHP-FPM + un container pour mariadb ou mysql
ou
un container pour apache avec le module PHP + un container pour mariadb ou mysql
voir https://doc.ubuntu-fr.org/php#installation
ce tuto explique ces deux cas de figure : https://doc.ubuntu-fr.org/docker_lamp

le tout toujours dans un seul fichier docker-compose.yml (par site ou projet)


jlba a écrit :

- ou alors je crée un environnement spécifique par projet : un directory par projet avec son dockerfile et son sous directory de volume pour persister ?

plutôt ça oui !
ce que tu persistes c'est ton site lui-même et sa base de données, et éventuellement les fichiers de config du serveur (apache / PHP) si tu veux les modifier facilement (sinon on peut les copier ou les paramétrer dans l'image).

l'intérêt par rapport à PHPbrew c'est que l'environnement est lié à ton projet web. c'est un fichier docker-compose.yml à joindre aux fichiers du site, et quand tu changes d'ordi tu n'as qu'à réinstaller docker pour reprendre où tu en étais avec tous tes sites.


krodelabestiole a écrit :

ici je partage un script qui permet de facilement "dockerifier"n'importe quelle application lamp : https://gitlab.com/crachecode/docker-lamp-app

je pense sincèrement que ça peut être un bon point de départ : le script te pose des questions comme le nom de ton projet (c'est un identifiant : pas d'accent, d'apostrophe, ni d'espace...) et s'occupe de créer une base données avec un utilisateur et un mot de passe aléatoire (il donne aussi le choix d'en importer une), et de générer les fichiers Dockerfile et docker-compose.yml qui vont bien.
il n'y a qu'à bien suivre le README.
il installe adminer, et traefik configuré qui permet de faire tourner plusieurs projets en même temps, chacun sur son sous-domaine de localhost (http://identifiant.localhost).

à la fin on peut éventuellement supprimer les autres fichiers du script si on n'en a plus besoin (je pourrais peut-être ajouter une méthode pour ça).
il faut juste garder :
- le répertoire config qui contient un fichier de configuration pour apache et un pour PHP
- les fichiers .env, Dockerfile et docker-compose.yml (c'est tout ce dont a besoin docker - ces fichiers sont standards et toute personne compétente avec docker pourra apporter son soutien si nécessaire.)
- le répertoire app qui contient les fichiers du site
- le répertoire db qui contient la base de données.
on peut évidemment éditer les fichiers de config (ajouter xdebug ?), ou docker-compose.yml pour ajouter d'autres services utiles pour le webdev, comme mailhog.

je pense que personne n'a utilisé ce script à part moi jusqu'ici donc ça ferait de toi un beta-testeur si tu es ok, mais il est à jour et fonctionnel. il permet d'installer les versions de PHP supportées officiellement par Debian en module d'apache : 7.3, 7.4 et 8.2 (voir le script d'install). pour d'autres versions (perso je n'en ai jamais eu besoin) il faudrait complexifier le script pour utiliser l'image PHP officielle, et donc PHP-FPM tant qu'à faire.

Hors ligne

#18 Le 11/07/2025, à 12:39

krodelabestiole

Re : Docker Lamp

pour info j'ai réécrit une bonne partie de la page https://doc.ubuntu-fr.org/docker

Hors ligne