Les prérequis avant de commencer
Avant de conteneuriser votre PrestaShop, vous devez disposer d'un VPS dédié (minimum 4 Go RAM, 2 vCPUs) sous Ubuntu 22.04 LTS ou Debian 12. Les hébergements mutualisés ne supportent pas Docker. C'est un investissement de 15 à 30 €/mois selon votre trafic — largement compensé par les économies de maintenance.
La stack recommandée
Pour un PrestaShop en production, voici la stack Docker éprouvée :
- Nginx : reverse proxy et serveur de fichiers statiques
- PHP-FPM 8.1 : moteur PHP isolé pour PrestaShop
- MariaDB 10.11 : base de données relationnelle
- Redis 7 : cache de sessions et de pages
Chaque service tourne dans son propre conteneur, communique via un réseau Docker interne, et expose uniquement les ports nécessaires vers l'extérieur.
Structure d'un docker-compose.yml minimal
services:\n nginx:\n image: nginx:alpine\n ports:\n - "443:443"\n volumes:\n - ./prestashop:/var/www/html:ro\n - ./nginx/default.conf:/etc/nginx/conf.d/default.conf\n\n php:\n image: php:8.1-fpm\n volumes:\n - ./prestashop:/var/www/html\n\n mariadb:\n image: mariadb:10.11\n environment:\n MYSQL_DATABASE: prestashop\n MYSQL_USER: ps_user\n MYSQL_PASSWORD: ${DB_PASSWORD}\n volumes:\n - mariadb_data:/var/lib/mysql\n\nvolumes:\n mariadb_data:Les erreurs classiques à éviter
Sur le terrain, trois erreurs reviennent systématiquement :
- Stocker les données dans le conteneur : si votre base de données n'est pas montée sur un volume, vous perdez toutes vos données au prochain
docker compose down. Toujours déclarer un volume nommé pour MariaDB. - Exposer le port 3306 de MariaDB : votre base de données ne doit jamais être accessible depuis l'extérieur. La communication entre PHP et MariaDB se fait via le réseau Docker interne.
- Utiliser le tag
latest: spécifiez toujours une version précise (mariadb:10.11, pasmariadb:latest). Le taglatestpeut changer sans préavis et casser votre stack au prochain rebuild.