Créer un conteneur PHP Docker

On utilise souvent les machines virtuelles pour avoir un système complet dans le système hôte permettant de faire tourner différents processus dans un environnement fermé et isolé. Cependant, ce genre de virtualisation c'est ce qu'on appelle "virtualisation lourde". Ils ont créé un autre système de virtualisation plus léger appelé "Conteneur".

Qu'est ce qu'un Conteneur?

Un conteneur est un espace qui permet de faire tourner des applications dans son propre environnement d'exécution. L'isolation avec le système hôte n'est pas totale dans le cas des conteneurs parce qu'ils partagent les ressources avec lui, seulement les processus sont isolés.

Comment créer un conteneur Docker?

Dans ce qui suit, nous allons présenter le processus de la création d'un conteneur Docker. On va utiliser, dans un premier temps, une simple application PHP afin de comprendre les étapes. Donc, commençant par la création d'un fichier 'index.php' qui contient un code simple:

<?php
echo  "Hello, World!";

Etape 1: Création d'un fichier Docker

Dans le répertoire principal, on va créer un fichier nommé 'Dockerfile' contenant les instructions de l'image Docker qu'on a besoin dans notre projet, comme suit:

FROM php:7.4-cli
COPY . /usr/src/test-docker
WORKDIR /usr/src/test-docker
CMD [ "php", "./index.php" ]

Nous allons expliquer le rôle de chaque instruction:

  • FROM: Le fichier Docker commence toujours par cette instruction, et nous pouvons l'utiliser qu'une seule fois dans ce fichier. Elle permet de préciser l'image utilisée comme base dans la construction de fichier Docker.

  • COPY: Comme les conteneurs n'ont pas accès aux fichiers du client Docker, on utilise cette instruction pour les copier à l'intérieur du conteneur.

  • WORKDIR: Elle fonctionne tous simplement comme la commande 'cd' mais dans un fichier Docker. Elle change donc le répertoire courant pour l'ensemble des instructions suivantes.

  • CMD: Elle permet au conteneur de savoir quelle commande il doit exécuter au démarrage.

Etape 2: Création de l'image Docker

Maintenant, on va compiler notre fichier Docker pour créer une image, et pour cela on exécute la commande suivante:

 docker build -t test-docker-app .

Le '-t' permet de donner un nom à votre image, et le point à la fin de la commande (.) représente le répertoire où se trouve notre fichier Docker, qui est le répertoire courant dans notre cas (la racine). Une fois l'exécution est terminée avec succès, vous allez avoir ce résultat:

Sending build context to Docker daemon 4.608 kB
Step 1/4 : FROM php:7.4-cli
 ---> 96324ce6cf40
Step 2/4 : COPY . /usr/src/test-docker
 ---> 3521c3604177
Removing intermediate container 6393670b4f96
Step 3/4 : WORKDIR /usr/src/test-docker
 ---> 4668574d4852
Removing intermediate container 8c3f57f9625f
Step 4/4 : CMD php ./index.php
 ---> Running in da77c491aba6
 ---> 66e09176a67e
Removing intermediate container da77c491aba6
Successfully built 66e09176a67e

Pour avoir la liste des images crées on utilise la commande :

docker images

Etape 3: Lancer le conteneur

Nous avons compilé notre fichier Docker et créé notre image et il ne reste que le lancement du conteneur:

docker run  --rm --name my-running-app test-docker-app

Vous pouvez aussi voir la liste des conteneurs en utilisant:

docker ps -a

On peut arrêter le conteneur grâce à la commande 'docker stop' + l'identifiant du conteneur qu'on peut le récupérer de la liste précédente:

docker stop f71bcb1ab580