Dans le monde du développement web, Docker est devenu un outil incontournable. Il permet aux développeurs de créer, déployer et exécuter des applications dans des conteneurs légers et isolés. Ce tutoriel complet vous explique en détail comment fonctionne Docker, à quoi il sert et pourquoi il est devenu indispensable pour les applications web modernes. Ce tutoriel Docker est accessible à tous, y compris aux débutants.
- Docker : Qu'est ce que c'est ? À quoi il sert ?
- Installer Docker et son moteur Docker : Le guide étape par étape
- Tester pour vérifier que Docker fonctionne ?
- Exemple concret : Déploiement d’une application web sous Node.js avec Docker
- Exemple concret : Déployer une application PHP avec Docker
- Déployer une application sous Docker vers un serveur
- Déployer une application PHP Docker sur un serveur OVH, IONOS ou O2Switch
- BONUS : Docker Compose, comment l'utiliser
- BONUS : Qu'est-ce qu'un fichier YAML ?

Docker : Qu’est ce que c’est ? À quoi il sert ?
Docker est un outil magique pour les développeurs, il permet d’emballer un site web ou une application avec tout ce dont il a besoin (ses programmes, ses fichiers, ses réglages) dans une petite boîte étanche appelée « conteneur ».
Il sert à faire tourner n’importe quel logiciel sur n’importe quel ordinateur sans avoir à tout installer à la main ou risquer de tout casser. On l’utilise parce que cela simplifie la vie : si ça fonctionne sur votre ordinateur, cela fonctionnera exactement de la même manière sur un serveur en ligne ou ailleurs.

Dans des termes plus techniques, Docker est une plateforme open-source qui permet de virtualiser des applications sous forme de conteneurs. Contrairement aux machines virtuelles, qui nécessitent une copie complète d’un système d’exploitation, un conteneur Docker partage le noyau du système hôte tout en restant isolé. Cela permet une exécution plus rapide et plus légère des applications.
Par exemple, si on développe une application web en PHP avec MySQL, Docker permet de créer un environnement identique à son PC ou Mac et son serveur sans avoir à installer PHP, Apache et MySQL manuellement. Donc pas besoin de Mamp ou similaire !
Pourquoi utiliser Docker pour une application web ?
L’utilisation de Docker pour une application web offre plusieurs avantages :
- Portabilité : Un conteneur Docker peut fonctionner sur n’importe quel système (Windows, macOS, Linux) sans modification.
- Isolation : Chaque conteneur est indépendant et ne dépend pas du système hôte.
- Facilité de déploiement : Docker permet d’automatiser le déploiement d’une application web sans se soucier des différences entre les environnements.
- Scalabilité : Il est facile de dupliquer et de gérer plusieurs instances d’une application grâce à l’orchestration avec Docker Compose ou Kubernetes.
- Gestion des dépendances : Toutes les librairies et configurations nécessaires sont incluses dans l’image Docker.
Kubernetes est le « chef d’orchestre » géant qui gère et coordonne des flottes entières de conteneurs Docker. Il sert à automatiser la vie de ces boîtes : s’il y a trop de visiteurs sur un site, il en fabrique de nouveaux tout seul pour éviter le plantage, et il remplace ceux qui tombent en panne.
On l’utilise pour faire tourner des applications géantes et complexes sur plusieurs serveurs en même temps, en s’assurant qu’elles restent toujours disponibles, stables et capables d’encaisser n’importe quel pic de trafic sans intervention humaine.
Comment fonctionne Docker ?
Les Concepts Clés de Docker :
- Images Docker : Ce sont des modèles préconçus contenant tout ce qu’il faut pour exécuter une application (code, dépendances, configurations).
- Conteneurs Docker : Un conteneur est une instance en cours d’exécution d’une image Docker.
- Dockerfile : Un fichier qui décrit les étapes pour créer une image Docker personnalisée.
- Docker Hub : Un registre en ligne où l’on peut trouver et partager des images Docker.
- Volumes Docker : Utilisés pour stocker les données persistantes d’un conteneur.

Cycle de Vie d’un Conteneur Docker :
- Création d’une image via un Dockerfile.
- Construction de l’image avec la commande :
docker build -t mon-application
- Exécution du conteneur basé sur l’image créée :
docker run -d -p 8080:80 mon-application
- Gestion du conteneur avec des commandes comme
docker ps,docker stop,docker rm.
Docker révolutionne le déploiement des applications web grâce à son approche basée sur les conteneurs. Il simplifie la gestion des environnements et assure une meilleure scalabilité et portabilité.
Que vous soyez développeur débutant ou expérimenté, maîtriser Docker est aujourd’hui essentiel pour le développement web moderne.
Installer Docker et son moteur Docker : Le guide étape par étape
Pour utiliser Docker en ligne de commande (ce qu’on appelle le Docker CLI, pour Command Line Interface), il faut installer l’ensemble du moteur Docker sur votre machine. C’est ce programme qui va recevoir vos ordres dans le terminal et faire tourner vos conteneurs.
Voici comment procéder pas à pas selon votre système d’exploitation.
Sur Windows et macOS
Sur ces systèmes, le moyen le plus simple et officiel d’obtenir le Docker CLI et le moteur de conteneurisation est d’installer Docker Desktop.
1.Télécharger Docker Desktop
Rendez-vous sur le site officiel de Docker et téléchargez le programme d’installation correspondant à votre système (Windows ou Mac, en vérifiant si votre Mac utilise une puce Apple Silicon ou Intel).
2.Installer l’application
Exécutez le fichier téléchargé et suivez les instructions à l’écran. Sous Windows, veillez à bien laisser cochée l’option activant les fonctionnalités WSL 2 (recommandé).
L’application s’installe et l’icône de Docker apparaît sur votre bureau ou dans vos applications.
3.Lancer Docker Desktop
Ouvrez l’application Docker Desktop. Une fois qu’elle est complètement lancée, une petite icône de baleine s’affiche dans votre barre des tâches ou barre de menu.
Ouvrez votre terminal (PowerShell sous Windows ou Terminal sous Mac) et tapez la commande suivante pour vérifier que le CLI communique bien avec le moteur.
docker version
Sur Linux (Ubuntu / Debian)
Sur Linux, il n’est pas nécessaire d’avoir une interface graphique : on installe directement les outils en ligne de commande via le gestionnaire de paquets.
1.Mettre à jour les paquets
Ouvrez votre terminal et mettez à jour la liste des logiciels disponibles :
sudo apt update
Vérifiez que la liste se télécharge bien sans erreur bloquante.
2.Installer Docker et le CLI
Installez le moteur Docker et ses outils en ligne de commande avec la commande suivante :
sudo apt install -y docker.io docker-compose
L’installation se termine et les binaires sont copiés sur le système.
3.Configurer les permissions (Optionnel mais recommandé) :1 min.
Pour éviter d’avoir à taper sudo devant chaque commande Docker, ajoutez votre utilisateur au groupe Docker :
sudo usermod -aG docker $USER
Déconnectez-vous de votre session Linux puis reconnectez-vous pour que le changement prenne effet.
Tester pour vérifier que Docker fonctionne ?
Une fois l’installation terminée et votre terminal ouvert, tapez la commande de test classique :
docker run hello-world
Docker va télécharger une petite image de test depuis Internet, exécuter un conteneur éphémère, et afficher dans votre terminal un message de succès confirmant que le CLI et le moteur fonctionnent main dans la main.
Cela va un message de confirmation commençant par :
Hello from Docker! This message shows that your installation appears to be working correctly.
Une fois qu’il est installé, Docker s’utilise principalement depuis le terminal, via la ligne de commande.
Que vous soyez sur Windows (dans PowerShell ou le terminal de ton éditeur), sur macOS (dans le Terminal) ou sur Linux, toutes les actions se font en tapant des commandes textuelles comme docker build, docker run ou docker-compose up.
Sous Windows et macOS, l’application Docker Desktop fournit une interface graphique (pour voir rapidement vos conteneurs actifs d’un coup d’œil), mais la grande majorité des développeurs gèrent tout directement depuis leur terminal.
Exemple concret : Déploiement d’une application web sous Node.js avec Docker
Dans cet exemple, nous allons dockeriser et déployer une application web simple avec Docker. L’application sera un serveur Node.js avec Express, qui affiche un message sur le navigateur.
Avant de commencer, assurez-vous d’avoir installé Docker sur votre machine :
Création de l’application web avec Node.js
Nous allons créer une petite application Node.js avec Express. Si vous ne maitrisez pas Node.js, consultez notre tutoriel pour créer un serveur Express avec Node.
Créer l’arborescence du projet
Dans un dossier que l’on nommera mon-app-docker, créez la structure suivante :
mon-app-docker/
│── Dockerfile
│── package.json
│── server.js
Écrire le fichier package.json
Créez un fichier package.json dans le dossier mon-app-docker au format JSON :
{
"name": "mon-app-docker",
"version": "1.0.0",
"description": "Application web simple avec Docker",
"main": "server.js",
"scripts": {
"start": "node server.js"
},
"dependencies": {
"express": "^4.17.1"
}
}
Ce fichier package.json est la carte d’identité et le carnet de bord de votre projet Node.js. Voici ce que contient chaque ligne importante :
- L’identité : Il indique que le projet s’appelle
mon-app-docker(version1.0.0) et qu’il s’agit d’une « Application web simple avec Docker ». - Le point de départ (
main) : Le fichier principal qui lance l’application estserver.js. - La commande de démarrage (
scripts) : La ligne"start": "node server.js"indique à Node.js comment allumer le serveur (en gros, tape justenpm startpour lancer le site). - Les dépendances (
dependencies) : Le projet a besoin d’un outil externe pour fonctionner : Express(version4.17.1ou supérieure), qui sert à créer facilement le serveur web.
Créer le fichier server.js
Créez un fichier server.js qui va lancer un serveur web Express :
const express = require("express");
const app = express();
const PORT = 3000;
app.get("/", (req, res) => {
res.send("Mon application web tourne avec Docker !");
});
app.listen(PORT, () => {
console.log(`Serveur démarré sur http://localhost:${PORT}`);
});
Ce code crée un petit serveur web en JavaScript. Il utilise l’outil Express pour dire : « Si quelqu’un visite la page d’accueil, affiche le message « Mon application web tourne avec Docker ! ». » Enfin, il allume le serveur sur le port 3000 et affiche un message dans la console pour prévenir qu’il est prêt.
Création du Dockerfile
Le Dockerfile définit l’environnement et la manière dont l’application doit être exécutée dans un conteneur.
Créez un fichier Dockerfile dans le dossier mon-app-docker :
# 1. Utiliser l'image Node.js officielle
FROM node:18
# 2. Définir le dossier de travail dans le conteneur
WORKDIR /app
# 3. Copier les fichiers nécessaires
COPY package.json ./
COPY server.js ./
# 4. Installer les dépendances
RUN npm install
# 5. Exposer le port sur lequel l’application tourne
EXPOSE 3000
# 6. Lancer l’application
CMD ["npm", "start"]
Ce code (le Dockerfile) est la recette pour fabriquer la boîte de l’application. Il prend un environnement Node.js de base, y copie les fichiers du projet, installe les outils nécessaires, ouvre la porte (le port 3000) pour qu’on puisse y accéder, et enfin démarre tout seul le serveur web.
Construire l’image Docker
Dans le terminal, placez-vous dans le dossier mon-app-docker et exécutez la commande suivante :
docker build -t mon-app .
Explication :
docker build: Construit une image Docker-t mon-app: Attribue le nommon-appà l’image
Lancer le conteneur
Une fois l’image construite, exécutez le conteneur avec :
docker run -d -p 8080:3000 mon-app
Explication :
docker run: Lance un conteneur-d: Mode détaché (en arrière-plan)-p 8080:3000: Lie le port 8080 du PC au port 3000 du conteneurmon-app: Nom de l’image à exécuter
Votre application est maintenant accessible à l’adresse :
🔗 http://localhost:8080
Vérifier que le conteneur fonctionne
Pour voir la liste des conteneurs actifs :
docker ps
Pour arrêter le conteneur :
docker stop <ID_DU_CONTENEUR>
Pour supprimer le conteneur :
docker rm <ID_DU_CONTENEUR>
(Optionnel) Utilisation de Docker Compose
Quand une application grandit, elle a souvent besoin de plusieurs outils en même temps (par exemple, un site web et une base de données). Lancer chaque conteneur un par un avec de longues lignes de commande devient vite fastidieux et compliqué à retenir. C’est là que Docker Compose entre en scène.
Grâce à un simple fichier de configuration, nommé docker-compose.yml rédigé au format YAML, vous décrivez tous les morceaux de votre application en un seul endroit.
Ensuite, une seule commande suffit pour tout démarrer, relier et faire fonctionner ensemble en quelques secondes, sans effort :
docker-compose up -d
Dans notre exemple, si vous voulez automatiser le lancement de votre application, vous pouvez utiliser Docker Compose.
Créez un fichier docker-compose.yml :
version: "3"
services:
web:
build: .
ports:
- "8080:3000"
Puis, exécutez simplement la commande précédente :
docker-compose up -d
Le fichier .dockerignore : Nettoyer et accélérer vos constructions
Tout comme le fichier .gitignore que vous utilisez avec Git, le fichier .dockerignore sert à indiquer à Docker les éléments du dossier qu’il ne doit pas copier dans votre image lors de la commande docker build.
Par exemple, il est totalement inutile (et contre-productif) de copier le dossier lourd node_modules ou vos fichiers de cache local, puisque tout sera réinstallé proprement à l’intérieur du conteneur grâce au npm install. En excluant ces fichiers inutiles, vous obtenez des images Docker beaucoup plus légères, plus sécurisées et des constructions (builds) nettement plus rapides.
Voici un exemple type de fichier .dockerignore à placer à la racine de ton projet Node.js, juste à côté de ton Dockerfile :
node_modules
npm-debug.log
.git
.gitignore
.env
README.md
docker-compose.yml
Ce fichier indique à Docker d’ignorer ces éléments lors de la construction de l’image. Le plus important est d’exclure node_modules (qui sera recréé proprement à l’intérieur du conteneur par npm install) et .env (pour éviter de stocker des mots de passe ou des clés secrètes dans l’image Docker).
Vous avez maintenant une application Node.js qui tourne dans un conteneur Docker ! Cette méthode fonctionne aussi avec PHP, Python (Flask, Django), Ruby, etc...
Pourquoi utiliser Docker pour une application web ?
✔️ Facilité de déploiement
✔️ Compatibilité assurée sur toutes les machines
✔️ Isolation des dépendances
Exemple concret : Déployer une application PHP avec Docker
Dans cet exemple, nous allons dockeriser et déployer une application PHP avec Apache en utilisant Docker.
Nous allons donc créer un projet PHP simple qui affiche un message sur une page web.
Arborescence du projet
Dans un dossier mon-app-php, créez la structure suivante :
mon-app-php/
│── Dockerfile
│── index.php
│── site.conf
│── docker-compose.yml
Créer le fichier index.php
C’est notre fichier PHP principal, qui s’affichera un message dans le navigateur.
<?php
echo "Mon application PHP fonctionne avec Docker !";
?>
Création du Dockerfile
Le Dockerfile permet de définir l’environnement PHP et Apache à utiliser.
Un
Dockerfileest un simple fichier texte qui sert de recette de cuisine pour fabriquer une image Docker. Il contient la liste étape par étape des instructions à suivre pour assembler votre environnement (installer les logiciels nécessaires, copier votre code source, ouvrir les bons ports et lancer le serveur).
Créez un fichier Dockerfile dans mon-app-php :
# 1. Utiliser l’image officielle PHP avec Apache
FROM php:8.2-apache
# 2. Copier les fichiers du projet dans le conteneur
COPY index.php /var/www/html/
# 3. Exposer le port 80 (port HTTP utilisé par Apache)
EXPOSE 80
# 4. Lancer Apache en arrière-plan
CMD ["apache2-foreground"]
Ce Dockerfile prépare un serveur web prêt à l’emploi : il installe PHP et Apache, y ajoute votre page index.php, ouvre le port 80 et démarre le serveur pour que votre site web soit accessible instantanément.
Création du fichier site.conf (Optionnel)
Si vous souhaitez configurer un hôte virtuel Apache, créez un fichier site.conf :
<VirtualHost *:80>
DocumentRoot "/var/www/html"
<Directory "/var/www/html">
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
Un hôte virtuel Apache (VirtualHost) est un réglage qui permet à un serveur web d’héberger et de gérer plusieurs sites internet différents sur une seule et même machine.
<VirtualHost *:80>: Indique que cette configuration s’applique à toutes les requêtes arrivant sur le port 80 (le port HTTP standard).DocumentRoot "/var/www/html": Désigne le dossier sur le serveur où sont stockés les fichiers du site web à afficher.<Directory ...>: Définit les règles de sécurité pour ce dossier.AllowOverride All: Autorise l’utilisation d’un fichier.htaccesspour surcharger la configuration.Require all granted: Donne l’autorisation à tout le monde d’accéder au site web.
Construire l’image Docker
Depuis le terminal, placez-vous dans le dossier mon-app-php et exécutez :
docker build -t mon-app-php .
Explication :
docker build: Construit une image Docker-t mon-app-php: Attribue le nommon-app-phpà l’image
Lancer le conteneur PHP
Une fois l’image construite, exécutez le conteneur avec :
docker run -d -p 8080:80 mon-app-php
Explication :
docker run: Lance un conteneur-d: Mode détaché (en arrière-plan)-p 8080:80: Lie le port 8080 du PC au port 80 du conteneurmon-app-php: Nom de l’image à exécuter
Votre application PHP est maintenant accessible à l’adresse :
🔗 http://localhost:8080
Vérifier que le conteneur tourne
Pour voir les conteneurs actifs :
docker ps
Pour arrêter le conteneur :
docker stop <ID_DU_CONTENEUR>
Pour supprimer le conteneur :
docker rm <ID_DU_CONTENEUR>
(Optionnel) Utilisation de Docker Compose
Comme avec le projet du serveur Express avec node.js, si vous voulez automatiser le lancement, utilisez Docker Compose.
Créez un fichier docker-compose.yml :
version: "3.8"
services:
php-apache:
build: .
ports:
- "8080:80"
volumes:
- .:/var/www/html
Lancez l’application avec :
docker-compose up -d
Félicitations ! Vous avez maintenant une application PHP qui tourne dans un conteneur Docker avec Apache !
Pourquoi utiliser Docker pour une application PHP ?
✔️ Facilité de déploiement
✔️ Environnement isolé et reproductible
✔️ Fonctionne sur toutes les machines
Déployer une application sous Docker vers un serveur
Maintenant que votre application PHP tourne localement avec Docker, nous allons voir comment la déployer sur un serveur distant.
Avant de commencer, assurez-vous d’avoir :
✅ Un serveur distant (VPS, dédié, ou cloud) avec Ubuntu/Debian
✅ Docker installé sur le serveur
✅ Accès SSH au serveur
✅ Un nom de domaine (optionnel, mais recommandé)
Pour en savoir plus sur les connexion en SSH avec votre serveur distant :
- Comprendre SSH en 30 min : Tutoriel complet et sécurisation
- Connexion SSH sur un serveur web mutualisé: O2Switch / Ionos
Installer Docker sur le serveur
Connectez-vous à votre serveur via SSH :
ssh utilisateur@mon-serveur-ip
Ensuite, installez Docker et Docker Compose :
sudo apt update && sudo apt install -y docker.io docker-compose
Vérifiez que Docker est bien installé :
docker --version
Il va maintenant falloir transférer l’application sur le serveur. Il existe plusieurs méthodes pour envoyer votre code PHP sur le serveur :
Méthode 1 : Utiliser scp (simple et rapide)
Depuis votre PC, transférez votre projet avec :
scp -r mon-app-php utilisateur@mon-serveur-ip:~/
Cela va copier le dossier mon-app-php dans le répertoire home du serveur.
Méthode 2 : Utiliser git (meilleure gestion des mises à jour)
Si votre projet est sur GitHub ou GitLab, vous pouvez simplement le cloner sur le serveur :
git clone https://github.com/votre-repo/mon-app-php.git
Construire et exécuter l’application sur le serveur
Accédez au dossier de votre application :
cd mon-app-php
Puis, construisez l’image Docker :
docker build -t mon-app-php .
Lancez le conteneur en exposant le port 80 :
docker run -d -p 80:80 --restart always mon-app-php
Explication :
-d: Exécute en arrière-plan-p 80:80: Expose le port 80 du serveur--restart always: Relance le conteneur en cas de crash/redémarrage
Votre application est maintenant disponible sur http://mon-serveur-ip !
(Optionnel) Déploiement avec Docker Compose
Si vous utilisez Docker Compose, créez un fichier docker-compose.yml :
version: "3.8"
services:
php-apache:
build: .
ports:
- "80:80"
volumes:
- .:/var/www/html
restart: always
Lancez l’application avec :
docker-compose up -d
Ajouter un Nom de Domaine avec Nginx (Optionnel mais recommandé)
Si vous voulez accéder à votre site via un nom de domaine, il faut configurer un reverse proxy Nginx avec un certificat SSL.
Installer Nginx et Certbot
sudo apt install nginx certbot python3-certbot-nginx -y
Créer un VirtualHost pour votre domaine
Éditez un fichier de configuration Nginx :
sudo nano /etc/nginx/sites-available/mon-site
Ajoutez :
server {
listen 80;
server_name mon-domaine.com;
location / {
proxy_pass http://localhost:80;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
Activez le site et redémarrez Nginx :
sudo ln -s /etc/nginx/sites-available/mon-site /etc/nginx/sites-enabled/
sudo systemctl restart nginx
Ajouter un certificat SSL (HTTPS)
sudo certbot --nginx -d mon-domaine.com
Mettre à Jour l’Application
Si vous faites des modifications sur votre projet, voici comment les appliquer :
mon-app-php
git pull # Si vous utilisez Git
docker build -t mon-app-php .
docker stop mon-app-php
docker rm mon-app-php
docker run -d -p 80:80 --restart always mon-app-php
Votre application PHP tourne désormais sur votre serveur Dockerisé !
Cette méthode est fiable, scalable et facile à gérer.
Avantages de Docker pour le déploiement PHP :
✔️ Facile à migrer sur un autre serveur
✔️ Fonctionne sur toutes les configurations
✔️ Séparation des dépendances et de l’environnement
Déployer une application PHP Docker sur un serveur OVH, IONOS ou O2Switch
Dans cet exemple, nous allons voir comment déployer une application PHP sous Docker sur un serveur OVH, IONOS ou O2Switch, en utilisant FileZilla pour le transfert des fichiers et SSH pour les commandes Docker.
Avant de commencer, vous devez avoir :
✅ Un serveur VPS chez OVH, IONOS ou O2Switch (⚠️ Un hébergement mutualisé ne supporte pas Docker !)
✅ Docker installé sur votre serveur
✅ Un accès SSH et FTP au serveur
✅ FileZilla installé sur votre PC ou Mac ou un autre client FTP
Récupérer les accès FTP et SSH de votre serveur
Sur OVH
- Allez sur l’espace client OVH → Hébergements → FTP-SSH
- Notez l’adresse FTP, le port, le login et le mot de passe
Sur IONOS
- Connectez-vous à l’interface IONOS → Serveurs & Cloud
- Notez vos identifiants SSH et FTP
Sur O2Switch
- Connectez-vous au cPanel → Comptes FTP
- Notez l’adresse FTP, le port et les identifiants
Transférer l’application avec FileZilla
Commençons par connecter FileZilla à votre serveur :
1️⃣ Ouvrez FileZilla
2️⃣ Allez dans Fichier → Gestionnaire de sites
3️⃣ Ajoutez une nouvelle connexion :
- Hôte : l’adresse FTP de votre serveur
- Identifiant : votre nom d’utilisateur FTP
- Mot de passe : votre mot de passe FTP
- Port : 21 (par défaut)
- Protocole : FTP – Protocole de transfert de fichiers
- Mode de chiffrement : « Utiliser FTP explicite sur TLS si disponible »
4️⃣ Cliquez sur « Connexion »
Envoyer les fichiers sur le serveur
Dans FileZilla, côté gauche (votre PC), sélectionnez votre dossier mon-app-php.
Glissez-déposez ce dossier dans le répertoire /home/utilisateur/ du serveur (côté droit).
✅ Les fichiers sont maintenant sur le serveur !
Se connecter en SSH et installer Docker
Sur votre ordinateur, ouvrez un terminal et tapez :
ssh utilisateur@mon-serveur-ip
Saisissez votre mot de passe SSH.
Installer Docker sur le serveur
Si Docker n’est pas installé, exécutez :
sudo apt update && sudo apt install -y docker.io docker-compose
Vérifiez l’installation :
docker --version
Construire et exécuter l’application sur le serveur
Accédez au dossier de l’application :
cd mon-app-php
Puis, construisez l’image Docker :
docker build -t mon-app-php .
Lancez l’application sur le serveur :
docker run -d -p 80:80 --restart always mon-app-php
🔹 Explication :
-d: Mode détaché (en arrière-plan)-p 80:80: Expose le port 80 du serveur--restart always: Relance le conteneur après un redémarrage
Votre application est maintenant accessible à l’adresse :
🔗 http://mon-serveur-ip
(Optionnel) Déploiement avec Docker Compose
Si vous souhaitez automatiser le lancement de l’application, utilisez Docker Compose.
Créer un fichier docker-compose.yml
version: "3.8"
services:
php-apache:
build: .
ports:
- "80:80"
volumes:
- .:/var/www/html
restart: always
Lancer l’application avec Compose
docker-compose up -d
(Optionnel) Associer un nom de domaine avec Nginx
Si vous avez un nom de domaine, vous pouvez configurer Nginx en tant que reverse proxy.
Installer Nginx et Certbot
sudo apt install nginx certbot python3-certbot-nginx -y
Configurer le VirtualHost
Créez un fichier de configuration Nginx :
sudo nano /etc/nginx/sites-available/mon-site
Ajoutez :
server {
listen 80;
server_name mon-domaine.com;
location / {
proxy_pass http://localhost:80;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
Activez le site et redémarrez Nginx :
sudo ln -s /etc/nginx/sites-available/mon-site /etc/nginx/sites-enabled/
sudo systemctl restart nginx
Ajouter un certificat SSL (HTTPS)
sudo certbot --nginx -d mon-domaine.com
✅ Votre site est maintenant accessible avec HTTPS !
Mettre à Jour l’Application
Si vous mettez à jour votre projet, voici comment redéployer :
cd mon-app-php
docker build -t mon-app-php .
docker stop $(docker ps -q)
docker rm $(docker ps -aq)
docker run -d -p 80:80 --restart always mon-app-php
Vous avez maintenant déployé votre application PHP sous Docker sur un serveur OVH, IONOS ou O2Switch, en utilisant FileZilla et SSH !
Pourquoi utiliser Docker pour le déploiement PHP ?
✔️ Facilité de migration entre serveurs
✔️ Isolation complète des dépendances
✔️ Scalabilité et simplicité d’administration
BONUS : Docker Compose, comment l’utiliser
Docker est un outil puissant, mais lorsqu’une application nécessite plusieurs services (comme PHP, MySQL et Nginx), gérer plusieurs conteneurs devient compliqué. C’est là que Docker Compose intervient !
Qu’est-ce que Docker Compose ?
Docker Compose est un outil qui permet de définir et exécuter des applications multi-conteneurs avec un simple fichier YAML (docker-compose.yml).
✅ Il simplifie le déploiement et la gestion des conteneurs.
✅ Il permet de démarrer plusieurs services en une seule commande.
✅ Il facilite la mise à jour et la maintenance des applications.
👉 Exemple typique d’une application avec Docker Compose :
Une application PHP qui utilise Apache, une base de données MySQL, et un serveur phpMyAdmin pour l’administration.
À quoi sert Docker Compose ?
Docker Compose est utile pour :
✔️ Créer et gérer plusieurs conteneurs en même temps
✔️ Éviter de taper des commandes Docker compliquées
✔️ Faciliter le partage et la mise en production d’un projet
✔️ Définir un environnement cohérent (même config en local et sur serveur)
Sans Docker Compose :
Il faudrait lancer chaque conteneur individuellement avec docker run ..., ce qui devient vite ingérable.
Avec Docker Compose :
Un simple docker-compose up -d suffit pour démarrer toute l’application.
Comment fonctionne Docker Compose ?
Docker Compose utilise un fichier YAML (docker-compose.yml) où vous définissez tous les services nécessaires à votre application.
Exemple de docker-compose.yml pour une application PHP avec MySQL
version: "3.8" # Version de Docker Compose
services:
php-apache:
image: php:8.1-apache
container_name: mon-php-container
ports:
- "8080:80"
volumes:
- .:/var/www/html
depends_on:
- mysql
mysql:
image: mysql:5.7
container_name: mon-mysql-container
restart: always
environment:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_DATABASE: mon_app
MYSQL_USER: user
MYSQL_PASSWORD: password
ports:
- "3306:3306"
phpmyadmin:
image: phpmyadmin/phpmyadmin
container_name: mon-phpmyadmin-container
depends_on:
- mysql
ports:
- "8081:80"
environment:
PMA_HOST: mysql
Explication :
services : Définit les différents conteneurs (PHP, MySQL, phpMyAdmin).image : Spécifie quelle image Docker utiliser.ports : Associe un port de la machine à un port du conteneur.volumes : Monte un dossier local dans le conteneur.depends_on : Assure que MySQL démarre avant PHP.environment : Définit des variables d’environnement (mot de passe MySQL, utilisateur, etc.).
Docker Compose : Les commandes essentielles
Démarrer l’application
docker-compose up -d
Lance tous les services en arrière-plan (-d = détaché).
Arrêter l’application
docker-compose down
Arrête et supprime les conteneurs.
Afficher les logs des conteneurs
docker-compose logs -f
Affiche les journaux en temps réel.
Voir les services en cours d’exécution
docker-compose ps
Liste les conteneurs actifs.
Recharger une application après modification
docker-compose up -d --build
Reconstruit les conteneurs et relance l’application.
Avantages de Docker Compose
✅ Facilité d’orchestration : Une seule commande pour tout lancer
✅ Configuration centralisée : Un seul fichier docker-compose.yml
✅ Consistance : Même environnement sur toutes les machines
✅ Scalabilité : Facile à déployer sur un serveur
Docker Compose simplifie la gestion des conteneurs en permettant de définir et de lancer une application complète en une seule commande.
Utilisez Docker Compose pour :
✔️ Travailler sur un projet PHP/MySQL sans galérer avec l’installation
✔️ Déployer facilement votre application sur un serveur
✔️ Gérer plusieurs services sans perdre de temps
BONUS : Qu’est-ce qu’un fichier YAML ?
YAML (Yet Another Markup Language, ou YAML Ain’t Markup Language) est un format de sérialisation de données qui est facile à lire et écrire. Il est souvent utilisé pour configurer des applications, comme Docker Compose, Kubernetes, Ansible, CI/CD et bien d’autres outils.
Pourquoi utiliser YAML ?
✅ Lisibilité : Plus lisible que JSON ou XML
✅ Simplicité : Pas de balises compliquées comme en XML
✅ Indentation claire : Utilise l’espace blanc pour structurer les données
✅ Compatibilité : Utilisé par de nombreux outils
Exemple de comparaison :
Fichier JSON
{
"nom": "Alban",
"age": 43,
"ville": "Troyes"
}
Fichier YAML (équivalent)
nom: Alban
age: 43
ville: Troyes
Plus clair et plus lisible !
Syntaxe YAML : Les bases
1️⃣ Clés et valeurs
Chaque ligne contient une clé suivie de : et de sa valeur.
nom: Alban
age: 43
2️⃣ Indentation avec des espaces (pas de tabulation !)
YAML utilise l’indentation avec des espaces pour structurer les données (comme en Python).
utilisateur:
nom: Alban
age: 43
ville: Troyes
3️⃣ Listes (Tableaux)
Les listes sont définies avec - devant chaque élément.
fruits:
- Pomme
- Banane
- Orange
4️⃣ Dictionnaires imbriqués (Objets dans objets)
personne:
nom: Alban
adresse:
rue: "12 rue des Lilas"
ville: Troyes
5️⃣ Valeurs multiples sur une seule ligne
serveurs: [web, base_de_donnees, cache]
Équivalent à :
serveurs:
- web
- base_de_donnees
- cache
6️⃣ Valeurs sur plusieurs lignes
Utilisez > pour une seule ligne continue :
description: >
Ceci est une description
sur plusieurs lignes, mais
elle sera affichée en une seule ligne.
Utilisez | pour conserver les retours à la ligne :
message: |
Ceci est un message
qui conserve les retours à la ligne.
Exemple concret avec Docker Compose
Voici un fichier docker-compose.yml qui définit une application PHP avec MySQL.
version: "3.8"
services:
php:
image: php:8.1-apache
volumes:
- .:/var/www/html
ports:
- "8080:80"
mysql:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: mon_app
Explication :
version: Indique la version de Docker Compose.services: Décrit les conteneurs (phpetmysql).image: Indique l’image Docker à utiliser.volumes: Monte le dossier actuel (.) dans/var/www/html.ports: Associe le port 8080 de la machine hôte au port 80 du conteneur.environment: Définit des variables d’environnement pour MySQL.
✅ YAML est un format simple, lisible et puissant pour définir des configurations.
✅ Utilisé partout : Docker Compose, Kubernetes, Ansible, CI/CD, etc.
✅ Facile à apprendre : Basé sur l’indentation et les clés-valeurs.


Fondateur de l’agence Créa-troyes.
Affilié France Num
Intervenant en Freelance.
Contactez-moi
