EduBox PrestaShop 9 Image

Image Docker patchée basée sur prestashop/prestashop:9, conçue pour fonctionner avec le reverse proxy dynamique d'EduBox.

Pourquoi une image patchée ?

PrestaShop 9 (Apache 2.4 + PHP 8.5) a deux problèmes majeurs derrière EduBox :

  1. Les headers X-Forwarded-* sont corrompus par Apache/PHP : $_SERVER les reçoit sous forme d'arrays au lieu de strings. On contourne ce bug via getenv() dans config/defines_custom.inc.php.
  2. PrestaShop utilise partout le domaine stocké en base (ps_shop_url) et la configuration PS_SSL_ENABLED. Derrière EduBox, le domaine public change à chaque instance (<id>.alfrednobel.edudeploy.com) et toutes les requêtes publiques arrivent en HTTPS. Les patches forcent l'utilisation de l'hôte et du protocole de la requête courante.

Build

cd /opt/edubox/prestashop-image
docker build -t edubox-prestashop:9 .

Patches appliqués

Patch Fichier modifié Objectif
edubox-tools.patch classes/Tools.php getShopDomain() / getShopDomainSsl() utilisent getHttpHost() dynamiquement.
edubox-link.patch classes/Link.php getBaseLink() utilise usingSecureMode() et getHttpHost().
edubox-frontcontroller.patch classes/controller/FrontController.php Désactive sslRedirection() pour éviter les boucles HTTP/HTTPS.
edubox-shop.patch classes/shop/Shop.php Shop::initialize() utilise le shop par défaut sans redirection forcée.
edubox-shopcontext.patch src/Core/Context/ShopContext.php getBaseURL() du BO est reconstruit à partir de la requête courante.
edubox-asseturl.patch src/Adapter/Assets/AssetUrlGeneratorTrait.php Les assets CCC utilisent le protocole de la requête, pas PS_SSL_ENABLED.
edubox-install.patch src/PrestaShopBundle/Install/Install.php finalize() respecte PS_FOLDER_ADMIN (évite le bug overlayfs adminadmin-edubox).

Fichiers injectés

  • proxy.conf : Apache truste X-Forwarded-Proto: https pour positionner HTTPS=on dans l'environnement PHP.
  • config/defines_custom.inc.php : normalise HTTP_X_FORWARDED_HOST, HTTP_X_FORWARDED_PROTO et HTTP_HOST corrompus ; définit PS_TRUSTED_PROXIES pour Symfony.

Utilisation dans EduBox

Le template PrestaShop 9 dans server/prisma/seed.ts utilise cette image :

app:
  image: edubox-prestashop:9

Déploiement sur les agents

L'image doit être accessible depuis chaque agent étudiant. Deux options :

  1. Registry privé (recommandé) : tagger et pousser l'image sur un registry (Docker Hub, registry Gitea, GHCR, etc.) puis mettre à jour server/prisma/seed.ts avec le nom complet (monregistry/edubox-prestashop:9).
  2. Build manuel sur chaque agent : copier le dossier prestashop-image sur l'agent et lancer docker build avant le premier déploiement.
S
Description
Custom PrestaShop 9 Docker image for EduBox
Readme 632 KiB
Languages
Dockerfile 59.6%
PHP 40.4%