Dockeriser une application simple avec PHP 8.2

Docker est une plateforme logicielle qui simplifie la création, le déploiement, et la gestion d'applications et de services dans des environnements isolés appelés conteneurs. Les conteneurs sont des unités autonomes qui encapsulent une application ainsi que toutes ses bibliothèques et dépendances. Ils permettent aux développeurs de conditionner une application avec tout ce dont elle a besoin pour fonctionner de manière uniforme, que ce soit sur un ordinateur local, dans le cloud ou dans un centre de données.
Si vous débutez avec Docker, vous vous demandez peut-être comment créer un fichier Docker Compose simple pour exécuter PHP. Dans ce tutoriel, nous allons utiliser la version 8.2 de PHP.
Créer le fichier docker-compose.yml
Commencez par créer un nouveau répertoire et placez-y un fichier index.php
contenant un simple "Hello World". Ce fichier servira à vérifier le bon fonctionnement de notre configuration.
<?php
echo 'Hello World !';
Ensuite, créez un fichier docker-compose.yml
à la racine du même répertoire. Copiez le contenu suivant dans ce fichier :
version: "3.9"
services:
php:
build:
context: .
dockerfile: Dockerfile.php
volumes:
- type: bind
source: .
target: /app
ports:
- 8000:8000
Explication du contenu du fichier docker-compose.yml
:
-
version: "3.9"
: Spécifie la version de la syntaxe Docker Compose utilisée. -
services
: Cette section définit les services Docker à créer et à exécuter. -
php
: Le nom du service, ici nommé "php". Vous pouvez le renommer selon les besoins de votre projet. -
build
: Cette section indique comment construire l'image Docker pour ce service.-
context: .
: Indique que le contexte de construction (c'est-à-dire le répertoire où se trouvent les fichiers nécessaires à la construction de l'image) est le répertoire actuel, où se trouve le fichierdocker-compose.yml
. -
dockerfile: Dockerfile.php
: Spécifie que le fichier Dockerfile à utiliser pour la construction de l'image s'appelle "Dockerfile.php" et doit être situé dans le même répertoire quedocker-compose.yml
.
-
-
volumes
: Cette section définit comment monter des volumes (c'est-à-dire des liens entre les fichiers de l'hôte et ceux du conteneur) pour ce service.-
type: bind
: Spécifie la création d'un volume de type "bind" qui lie un répertoire de l'hôte à un répertoire du conteneur. -
source: .
: Indique que le répertoire de l'hôte à lier est le répertoire actuel, où se trouve le fichierdocker-compose.yml
. -
target: /app
: Spécifie que le répertoire du conteneur auquel le répertoire de l'hôte sera lié est "/app".
-
-
ports
: Cette section indique comment mapper les ports du conteneur vers les ports de l'hôte.- 8000:8000
: Signifie que le port 8000 du conteneur est mappé sur le port 8000 de l'hôte. Vous pourrez ainsi accéder au service qui écoute sur le port 8000 du conteneur en utilisanthttp://localhost:8000
sur votre machine hôte.
Créer le fichier Dockerfile.php
Placez ce fichier à la racine de votre répertoire. Ajoutez les instructions suivantes au fichier Dockerfile.php
:
FROM php:8.2-cli
RUN mv "$PHP_INI_DIR/php.ini-development" "$PHP_INI_DIR/php.ini"
WORKDIR /app
COPY . /app
EXPOSE 8000
CMD ["php", "-S", "0.0.0.0:8000"]
Explication du contenu du fichier Dockerfile.php
:
-
FROM php:8.2-cli
: Cette instruction définit l'image de base à utiliser pour la construction de l'image Docker. Dans ce cas, l'image officielle de PHP en version 8.2 en mode CLI est utilisée. -
RUN mv "$PHP_INI_DIR/php.ini-development" "$PHP_INI_DIR/php.ini"
: Cette instruction exécute une commande shell lors de la construction de l'image. Elle renomme le fichier de configuration PHP de "php.ini-development" à "php.ini", ce qui active la configuration par défaut de PHP pour le conteneur. -
WORKDIR /app
: Cette instruction définit le répertoire de travail par défaut à l'intérieur du conteneur. Toutes les commandes ultérieures seront exécutées à partir de ce répertoire, en l'occurrence "/app". -
COPY . /app
: Cette instruction copie les fichiers et répertoires du système de fichiers local (c'est-à-dire le répertoire où se trouve le Dockerfile) vers le répertoire "/app" à l'intérieur du conteneur. Cela permet de copier les fichiers de votre application dans l'image Docker en cours de construction. -
EXPOSE 8000
: Cette instruction indique que le conteneur exposera le port 8000. Cela ne signifie pas que le port sera accessible depuis l'extérieur, mais cela permettra de mapper ce port lors de l'exécution du conteneur. -
CMD ["php", "-S", "0.0.0.0:8000"]
: Cette instruction définit la commande par défaut à exécuter lorsque le conteneur est démarré. Dans ce cas, elle exécute la commande "php -S 0.0.0.0:8000", ce qui signifie que le conteneur exécutera un serveur PHP interne écoutant sur le port 8000, acceptant les connexions de toutes les interfaces réseau ("0.0.0.0"). Cette configuration est couramment utilisée pour lancer un serveur de développement PHP pour une application web.
Construire et démarrer l'image Docker
Lors du premier lancement, exécutez la commande suivante depuis le terminal, à partir du répertoire où se trouve votre application :
docker-compose up --build
Cette première étape permet de construire votre image pour la première fois.
Pour arrêter le conteneur, utilisez simplement la commande :
docker-compose down
Pour relancer votre conteneur avec votre application après la première construction, il n'est pas nécessaire d'ajouter l'option --build
. Utilisez simplement :
docker-compose up
Maintenant, ouvrez votre navigateur et accédez à l'adresse http://0.0.0.0:8000/. Vous devriez voir le message "Hello World !" s'afficher.
Si vous modifiez le fichier index.php
, les changements seront reflétés en actualisant simplement la page, grâce au volume de type "bind" que vous avez configuré dans votre fichier docker-compose.yml
!
Commentaires
Connectez-vous ou inscrivez-vous pour commenter cet article !