🐳 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 & Answers

A question about this lesson? The AI replies automatically.

Your questions and the AI's answers are public and enrich the course for everyone. Your email is used only for authentication (legal basis: legitimate interest, retention: 3 years). Privacy policy.