🐳 Module 51
4

Mettre en place Docker pour PrestaShop : les bases techniques

Leçon 4 / 5 — 2h

« L'architecture est la volonté d'une époque traduite dans l'espace. »

L

Ludwig Mies van der Rohe

L'Architecte · 1886-1969

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, pas mariadb:latest). Le tag latest peut changer sans préavis et casser votre stack au prochain rebuild.

A retenir : Commencez par conteneuriser votre environnement de développement local — une fois que votre <code>docker-compose.yml</code> fonctionne en local, la migration en production est une formalité.

Questions & Réponses

Une question sur cette leçon ? L'IA répond automatiquement.

Vos questions et les réponses IA sont publiques et enrichissent le cours pour tous. Votre email est utilisé uniquement pour l'authentification (base légale : intérêt légitime, durée : 3 ans). Politique de confidentialité.