Installer Magento 2 avec Docker Compose (prod) : Redis, OpenSearch, SSL (guide 2026)

Installer Magento 2 avec Docker Compose (prod) : Redis, OpenSearch, SSL (guide 2026)

Déployez Magento 2 en production avec Docker Compose : HTTPS via reverse proxy, base MySQL/MariaDB, Redis, OpenSearch, persistance, perf et sauvegardes.

Installer Magento 2 avec Docker Compose (prod) : Redis, OpenSearch, SSL (guide 2026)

Magento 2 est puissant… et exigeant : beaucoup d’I/O, une base de données sollicitée, un moteur de recherche (OpenSearch/Elasticsearch), et souvent un cache (Redis).

Schéma de stack Magento 2 en production : services, cache, HTTPS, sauvegardes

Objectif de ce guide : une base propre et reproductible pour la production, avec :

  • HTTPS via reverse proxy
  • volumes persistants
  • Redis
  • OpenSearch
  • une stratégie simple pour sauvegarder et restaurer

Si vous voulez aller plus vite (déploiement 1 clic, facturation à l’heure, start/stop, sauvegardes automatiques, scaling CPU/RAM), vous pouvez aussi tester Magento sur adgents.cloud.

Vidéo (YouTube, FR)

Cloud background


Prérequis

  • Un serveur Linux (Debian/Ubuntu), accès SSH
  • Un domaine (ex : shop.example.com) + DNS configuré
  • Docker + Docker Compose
  • Un compte Magento (clés d’accès repo.magento.com pour installer via Composer)

Si vous avez déjà déployé un CMS en conteneurs, vous retrouveras les mêmes principes que dans Installer PrestaShop avec Docker Compose (prod) : proxy HTTPS, volumes, base de données isolée.


Architecture recommandée (simple et robuste)

On sépare clairement :

  • Reverse proxy (Traefik) : TLS, redirections, en-têvos
  • Nginx (front Magento)
  • PHP-FPM (application)
  • Base (MariaDB ou MySQL)
  • Redis : cache / sessions
  • OpenSearch : recherche catalogue

Pourquoi cette séparation ?

  • vous pouvez mettre à jour le front sans toucher à la base
  • vous pouvez dimensionner OpenSearch indépendamment
  • vous réduis la surface exposée (seuls 80/443 sont publics)

Pour une approche “déploiement applicatif en 1 clic + scaling”, vois aussi adgents.cloud.

Déploiement et infra (illustration)


1) Préparer le dossier et les variables

Sur le serveur :

mkdir -p ~/magento-compose && cd ~/magento-compose

Crée un fichier .env (à adapter) :

# Domaine
MAGENTO_HOST=shop.example.com
[email protected]

# Base
DB_NAME=magento
DB_USER=magento
DB_PASSWORD=change_me_strong
DB_ROOT_PASSWORD=change_me_root

# Admin Magento
MAGENTO_ADMIN_USER=admin
MAGENTO_ADMIN_PASSWORD=change_me_very_strong
[email protected]
MAGENTO_ADMIN_FIRSTNAME=Admin
MAGENTO_ADMIN_LASTNAME=Store

# Locale
TZ=Europe/Paris

# OpenSearch
OPENSEARCH_JAVA_OPTS=-Xms1g -Xmx1g

Astuce : garde .env hors Git et utilise des mots de passe longs.


2) Docker Compose (Traefik + Magento + DB + Redis + OpenSearch)

Crée compose.yaml :

services:
  traefik:
    image: traefik:v3.2
    restart: always
    command:
      - --providers.docker=true
      - --providers.docker.exposedbydefault=false
      - --entrypoints.web.address=:80
      - --entrypoints.web.http.redirections.entrypoint.to=websecure
      - --entrypoints.web.http.redirections.entrypoint.scheme=https
      - --entrypoints.websecure.address=:443
      - --certificatesresolvers.le.acme.tlschallenge=true
      - --certificatesresolvers.le.acme.email=${LE_EMAIL}
      - --certificatesresolvers.le.acme.storage=/letsencrypt/acme.json
    ports:
      - 80:80
      - 443:443
    volumes:
      - traefik_letsencrypt:/letsencrypt
      - /var/run/docker.sock:/var/run/docker.sock:ro

  db:
    image: mariadb:10.11
    restart: always
    environment:
      MARIADB_DATABASE: ${DB_NAME}
      MARIADB_USER: ${DB_USER}
      MARIADB_PASSWORD: ${DB_PASSWORD}
      MARIADB_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
      TZ: ${TZ}
    volumes:
      - db_data:/var/lib/mysql

  redis:
    image: redis:7-alpine
    restart: always
    command: ["redis-server", "--appendonly", "yes"]
    volumes:
      - redis_data:/data

  opensearch:
    image: opensearchproject/opensearch:2
    restart: always
    environment:
      discovery.type: single-node
      plugins.security.disabled: "true"
      OPENSEARCH_JAVA_OPTS: ${OPENSEARCH_JAVA_OPTS}
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - opensearch_data:/usr/share/opensearch/data

  magento:
    image: bitnami/magento:2
    restart: always
    depends_on:
      - db
      - redis
      - opensearch
    environment:
      MAGENTO_HOST: ${MAGENTO_HOST}
      MAGENTO_DATABASE_HOST: db
      MAGENTO_DATABASE_PORT_NUMBER: 3306
      MAGENTO_DATABASE_NAME: ${DB_NAME}
      MAGENTO_DATABASE_USER: ${DB_USER}
      MAGENTO_DATABASE_PASSWORD: ${DB_PASSWORD}
      MAGENTO_ADMIN_USER: ${MAGENTO_ADMIN_USER}
      MAGENTO_ADMIN_PASSWORD: ${MAGENTO_ADMIN_PASSWORD}
      MAGENTO_ADMIN_EMAIL: ${MAGENTO_ADMIN_EMAIL}
      MAGENTO_ADMIN_FIRSTNAME: ${MAGENTO_ADMIN_FIRSTNAME}
      MAGENTO_ADMIN_LASTNAME: ${MAGENTO_ADMIN_LASTNAME}
      MAGENTO_TIMEZONE: ${TZ}
      MAGENTO_USE_SECURE_ADMIN: "yes"
      MAGENTO_SEARCH_ENGINE: opensearch
      MAGENTO_OPENSEARCH_HOST: opensearch
      MAGENTO_OPENSEARCH_PORT_NUMBER: 9200
      MAGENTO_REDIS_HOST: redis
    labels:
      - traefik.enable=true
      - traefik.http.routers.magento.rule=Host(`${MAGENTO_HOST}`)
      - traefik.http.routers.magento.entrypoints=websecure
      - traefik.http.routers.magento.tls=true
      - traefik.http.routers.magento.tls.certresolver=le
      - traefik.http.services.magento.loadbalancer.server.port=8080
    volumes:
      - magento_data:/bitnami/magento

volumes:
  traefik_letsencrypt:
  db_data:
  redis_data:
  opensearch_data:
  magento_data:

Ce fichier donne une base “prod friendly” :

  • le proxy publie uniquement 80/443
  • DB/Redis/OpenSearch restent privés
  • les données sont persistées via volumes

Pour un autre exemple de reverse proxy et de persistance, vous pouvez aussi lire Installer Botpress avec Docker (prod) : même logique d’expo minimale et de volumes.


3) Démarrer et vérifier

docker compose up -d
docker compose ps
docker compose logs -f --tail=200

Ensuite :

  • Front : https://${MAGENTO_HOST}
  • Admin : https://${MAGENTO_HOST}/admin (l’URL exacte dépend du setup)

4) Réglages performance qui font une vraie différence

Redis (cache + sessions)

Redis réduit la pression DB sur beaucoup d’écrans Magento. Une fois l’instance stable, vérifie :

  • que les caches applicatifs sont bien activés
  • que les sessions ne reviennent pas au filesystem

Si vous êvos dans une démarche “boutique rapide”, la logique est proche de WooCommerce : optimiser performances + scaling + monitoring : d’abord cache/DB/images, puis montée en charge.

OpenSearch

OpenSearch est souvent le point qui consomme le plus de RAM. Ajuste :

  • la mémoire Java (OPENSEARCH_JAVA_OPTS)
  • le volume data sur disque rapide

5) Sauvegardes (minimum viable)

Objectif : pouvoir restaurer après une mise à jour ratée ou une erreur humaine.

Sauvegarder la base

mkdir -p ~/backups/magento

docker exec -i $(docker compose ps -q db) mariadb-dump -u${DB_USER} -p${DB_PASSWORD} ${DB_NAME} \
  | gzip > ~/backups/magento/db-$(date +%F).sql.gz

Sauvegarder les fichiers

Le volume magento_data contient le code, la config et une partie des données. Deux approches :

  • snapshots de volumes
  • export tar + stockage externe

Lancez-vous avec Magento.

Envie de vous lancer avec Magento ? Créez votre site web en quelques clics.

Magento

Magento

E-commerce enterprise

Déployer Magento

6) Sécurité : 6 réflexes utiles

  • n’ouvre que 80/443 (et SSH si nécessaire)
  • pas d’accès public à la DB
  • mots de passe forts + rotation
  • mises à jour régulières des images
  • logs proxy + alertes
  • limiter l’accès admin (IP autorisées / VPN si possible)

Pour les principes de réduction d’exposition et de journalisation, plusieurs points recoupent Sécuriser n8n : secrets, webhooks, authentification, logs et RGPD.


Déployer Magento sans gérer l’infra

Si vous voulez une boutique Magento plus simple à opérer :

  • déploiement en 1 clic
  • facturation à l’heure
  • start/stop (compute non facturé à l’arrêt)
  • sauvegardes automatiques (24h par défaut, jusqu’à 1/h)
  • rétention longue (jusqu’à 10 ans)
  • scaling CPU/RAM à la demande

Découvrir : Magento sur adgents.cloud.

Cloud pattern

Cet article vous a été utile ?

N'hésitez pas à découvrir d'autres articles

Voir plus d'articles