2.9 KiB
2.9 KiB
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 :
- Les headers
X-Forwarded-*sont corrompus par Apache/PHP :$_SERVERles reçoit sous forme d'arrays au lieu de strings. On contourne ce bug viagetenv()dansconfig/defines_custom.inc.php. - PrestaShop utilise partout le domaine stocké en base (
ps_shop_url) et la configurationPS_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 admin → admin-edubox). |
Fichiers injectés
proxy.conf: Apache trusteX-Forwarded-Proto: httpspour positionnerHTTPS=ondans l'environnement PHP.config/defines_custom.inc.php: normaliseHTTP_X_FORWARDED_HOST,HTTP_X_FORWARDED_PROTOetHTTP_HOSTcorrompus ; définitPS_TRUSTED_PROXIESpour 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 :
- Registry privé (recommandé) : tagger et pousser l'image sur un registry
(Docker Hub, registry Gitea, GHCR, etc.) puis mettre à jour
server/prisma/seed.tsavec le nom complet (monregistry/edubox-prestashop:9). - Build manuel sur chaque agent : copier le dossier
prestashop-imagesur l'agent et lancerdocker buildavant le premier déploiement.