Initialisation
Nous allons utiliser l'outil Compose maintenant intégré à Docker nativement.
Vous n'avez rien de plus à installer.
Seulement de vous placer dans le dossier racine du projet et lancer les commandes suivantes :
docker compose -f compose.nginxfpm.yml build
En se basant sur les informations fournies dans les fichiers compose.yml, compose.nginxfpm.yml et .docker/php-fpm/Dockerfile.
Cette commande va construire vos containers sans les allumer réellement.
Elle va les câbler entre eux si besoin, installer des librairies, changer de la configuration etc..
docker compose -f compose.nginxfpm.yml up -d
Cette commande va mettre en service vos containers.
Apres cela vos containers seront accessibles depuis votre machine hôte.
Les opérations précédentes peuvent prendre quelques minutes la première fois que vous les lancerez. Et c'est bien normal !
Avec ce qui est écrit dans notre compose.yml et compose.nginxfpm.yml , Docker va devoir télécharger 3 images :
| Image Docker (image:tag) | Commentaire |
|---|---|
| nginx:latest | Un serveur web, le point d'entrée de notre application, il transmet une requête à PHP via FastCGI puis renvoit le résultat au client |
| php:8.2-fpm-alpine | Un langage de script, il communiquera avec Nginx via FastCGI, c'est lui qui lit les fichiers du projet et passe ensuite le résultat au serveur |
| postgres:12-alpine | Une base de donnée, pour la persistance de l'information et la redélivre à la demande, dans notre cas Doctrine sera la passerelle entre PHP et PostgreSQL |
Le tag alpine désigne une distribution Linux très légère
Très utile ici pour réduire le poids de nos images et containers
Au fait c'est bon, l'application est déjà accessible sur votre localhost:80.
Merci Docker, vous avez maintenant ce qu'il faut pour faire tourner l'application.
Enfin presque, il reste une chose que la documentation ne peut pas fournir.
Des données pour remplir votre Base de données PostgreSQL.
Les deux commandes Makefile suivantes vous serviront respectivement de lancer et d'arrêter vos conteneurs Docker :
make docker-start
make docker-stop