[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"theme-db":3,"megamenu":22,"$fP0FV7zZkQhZStJelKMQF2vnI2nbZQB210etjzdyGslw":92,"footer-db":160,"header-db":179,"$fQEVjezHTGt7Hcd3Cab3yHYzVQ8PC2gz1dMu2O1bK868":190,"$fL4e0HbV4qr6WHKuqbsPl8mUVKjGgkvk4qk-bXWfZGR4":204,"$fu80zlTTcSIN6ybrHjLa-orTt8M1KygpiKjCWCDQGfyg":262,"$ftCgiCQ1Qyz6eieo83he29D_FsSw74NeCmklcXAHGAsA":263},{"theme":4},{"colors":5,"typography":13,"ui":17,"defaultColorMode":21},{"primary":6,"secondary":7,"background":8,"foreground":9,"muted":10,"headerBg":11,"footerBg":12,"topBarBg":9,"topBarText":11},"#4F46E5","#0D9488","#F9FAFB","#111827","#6B7280","#ffffff","#020617",{"fontFamily":14,"fontUrl":15,"baseFontSize":16},"Inter, system-ui, sans-serif","https:\u002F\u002Ffonts.googleapis.com\u002Fcss2?family=Inter:wght@400;500;600;700&family=Playfair+Display:ital,wght@0,400;0,700;0,800;0,900;1,400;1,700&display=swap","16px",{"borderRadius":18,"contentWidth":19,"shadow":20},"lg","7xl",true,"light",{"items":23},[24,35,43,51,59,68,76,84],{"id":25,"type":26,"label":27,"href":29,"icon":30,"description":30,"badge":30,"groupTitle":30,"style":30,"gridColumns":30,"cssClass":30,"psCategoryId":30,"showPsChildren":31,"position":32,"children":33,"psChildren":34},41,"link",{"fr":28},"Expertise","\u002Fexpertise",null,false,0,[],[],{"id":36,"type":26,"label":37,"href":39,"icon":30,"description":30,"badge":30,"groupTitle":30,"style":30,"gridColumns":30,"cssClass":30,"psCategoryId":30,"showPsChildren":31,"position":40,"children":41,"psChildren":42},42,{"fr":38},"Blog","\u002Fblog",1,[],[],{"id":44,"type":26,"label":45,"href":47,"icon":30,"description":30,"badge":30,"groupTitle":30,"style":30,"gridColumns":30,"cssClass":30,"psCategoryId":30,"showPsChildren":31,"position":48,"children":49,"psChildren":50},43,{"fr":46},"Modules PrestaShop","\u002Fmodules",2,[],[],{"id":52,"type":26,"label":53,"href":55,"icon":30,"description":30,"badge":30,"groupTitle":30,"style":30,"gridColumns":30,"cssClass":30,"psCategoryId":30,"showPsChildren":31,"position":56,"children":57,"psChildren":58},44,{"fr":54},"Outils IA","\u002Foutils-ia",3,[],[],{"id":60,"type":26,"label":61,"href":63,"icon":30,"description":30,"badge":30,"groupTitle":30,"style":64,"gridColumns":30,"cssClass":30,"psCategoryId":30,"showPsChildren":31,"position":65,"children":66,"psChildren":67},45,{"fr":62},"Offre Starter ✨","\u002Foffre-starter",{"highlight":20},4,[],[],{"id":69,"type":26,"label":70,"href":72,"icon":30,"description":30,"badge":30,"groupTitle":30,"style":30,"gridColumns":30,"cssClass":30,"psCategoryId":30,"showPsChildren":31,"position":73,"children":74,"psChildren":75},46,{"fr":71},"Academy","\u002Facademy",5,[],[],{"id":77,"type":26,"label":78,"href":80,"icon":30,"description":30,"badge":30,"groupTitle":30,"style":30,"gridColumns":30,"cssClass":30,"psCategoryId":30,"showPsChildren":31,"position":81,"children":82,"psChildren":83},47,{"fr":79},"À propos","\u002Fa-propos",6,[],[],{"id":85,"type":26,"label":86,"href":88,"icon":30,"description":30,"badge":30,"groupTitle":30,"style":30,"gridColumns":30,"cssClass":30,"psCategoryId":30,"showPsChildren":31,"position":89,"children":90,"psChildren":91},48,{"fr":87},"Contact","\u002Fcontact",7,[],[],{"columns":93},[94,106,136,152],{"title":95,"links":96},"Plateforme",[97,99,102,103],{"label":98,"href":63,"external":31},"Offre Starter (2 500 €)",{"label":100,"href":101,"external":31},"Devenir Ambassadeur","\u002Fambassadeur",{"label":46,"href":47,"external":31},{"label":104,"href":105,"external":20},"CodeMyShop.com","https:\u002F\u002Fcodemyshop.com",{"title":107,"links":108},"Le Synedre",[109,112,115,118,121,124,127,130,133],{"label":110,"href":111,"external":31},"L'histoire","\u002Fsynedre",{"label":113,"href":114,"external":31},"Constitution","\u002Fsynedre\u002Fconstitution",{"label":116,"href":117,"external":31},"L'équipe","\u002Fequipe",{"label":119,"href":120,"external":31},"Le réacteur en direct","\u002Freacteur",{"label":122,"href":123,"external":31},"Le Drill (entraînement)","\u002Fdrill",{"label":125,"href":126,"external":31},"Protocole de réunion","\u002Fsynedre\u002Freunion",{"label":128,"href":129,"external":31},"Les agents IA","\u002Fagents-ia",{"label":131,"href":132,"external":31},"La Conduite","\u002Fsynedre\u002Fconduite",{"label":134,"href":135,"external":31},"Charte plateforme","\u002Fsynedre\u002Fcharte",{"title":137,"links":138},"Ressources",[139,140,141,144,146,149],{"label":38,"href":39,"external":31},{"label":71,"href":72,"external":31},{"label":142,"href":143,"external":31},"Dictionnaire","\u002Fdictionnaire",{"label":145,"href":29,"external":31},"Expertise PrestaShop",{"label":147,"href":148,"external":31},"Flywheel","\u002Fflywheel",{"label":150,"href":151,"external":31},"Manifeste","\u002Fmanifeste",{"title":79,"links":153},[154,156,159],{"label":155,"href":80,"external":31},"Alexandre Carette",{"label":157,"href":158,"external":31},"Dossier de presse","\u002Fpresse",{"label":87,"href":88,"external":31},{"footer":161},{"theme":162,"description":30,"hours":30,"logo":163,"contact":166,"social":167,"bottomBar":177,"newsletter":178},"dark",{"src":164,"href":165,"alt":155},"\u002Flogo-ac.svg","\u002F",{"email":30,"phone":30,"address":30,"cta":30},[168,171,174],{"platform":169,"href":170,"label":169},"linkedin","https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Falexandre-carette\u002F",{"platform":172,"href":173,"label":172},"malt","https:\u002F\u002Fwww.malt.fr\u002Fprofile\u002Falexandrecarette",{"platform":175,"href":176,"label":175},"github","https:\u002F\u002Fgithub.com\u002Fprest4cafe",{"copyright":30},{"show":31,"title":30,"description":30,"placeholder":30,"ctaLabel":30,"consentText":30},{"header":180},{"logo":181,"topBar":184,"contactEmail":187,"features":188,"navBar":30},{"src":164,"alt":182,"text":155,"href":165,"class":183},"Alexandre Carette — Architecte E-commerce Souverain","h-10 w-10",{"message":30,"messageMobile":30,"showLanguages":31,"align":185,"languages":186},"left",[],"contact@alexandrecarette.fr",{"showSearch":31,"showWishlist":31,"showLogin":20,"showContact":31,"showCart":31,"showBlogLink":31,"showContactLink":31,"showGiftcardLink":31,"showStoresLink":31,"stickyHeader":20,"headerLayout":189},"inline",{"academy":191,"blog":192,"expertise":203},[],[193,197,200],{"title":194,"url":195,"type":196},"Prestashop hosting OVH : guide complet pour e-commerçants","\u002Fblog\u002Fprestashop\u002Fperformance\u002Fprestashop-hosting-ovh-guide-complet-ecommercants","blog",{"title":198,"url":199,"type":196},"Core Web Vitals PrestaShop : passer de 30 à 95 sur PageSpeed","\u002Fblog\u002Fprestashop\u002Fperformance\u002Fcore-web-vitals-prestashop-pagespeed-95",{"title":201,"url":202,"type":196},"CI\u002FCD e-commerce : déployer PrestaShop Headless via GitHub Actions","\u002Fblog\u002Fprestashop\u002Fdeveloppement\u002Fcicd-github-actions-headless-nuxt",[],{"id":205,"title":206,"category":207,"subcategory":208,"slug":209,"coverImage":210,"thumbnailImage":211,"content":212,"faq":213,"metaDescription":259,"active":20,"datePublished":260,"dateUpdated":260,"readingTime":261,"mentor":30,"audioEnabled":31,"audioUrl":260,"author":30},16,"Docker PrestaShop VPS : déployer en production sans stress","prestashop","performance","performance--docker-vps-deploy-production","https:\u002F\u002Falexandrecarette.fr\u002Fblog-covers\u002Fcover-docker-prestashop-vps-1773903602.webp","https:\u002F\u002Falexandrecarette.fr\u002Fblog-covers\u002Fthumb-docker-prestashop-vps-1773903602.webp","\u003Cp class=\"lead\">Après 193 projets PrestaShop livrés, j'ai constaté que la majorité des échecs en production ne viennent pas du code, mais de l'infrastructure. Déployer \u003Cstrong>Docker PrestaShop sur un VPS\u003C\u002Fstrong> semble simple en théorie — un \u003Ccode>docker compose up -d\u003C\u002Fcode> et c'est parti. En pratique, c'est là que les ennuis commencent : volumes perdus, certificats SSL expirés en pleine nuit, conteneurs qui tournent en root sans que personne ne s'en rende compte. Docker est utilisé par plus de 20 millions de développeurs dans le monde selon le \u003Cstrong>Docker State of Application Development Report 2024\u003C\u002Fstrong>, mais combien l'utilisent correctement en production e-commerce ?\u003C\u002Fp>\n\n\u003Cp>Cet article est le guide terrain que j'aurais voulu avoir lors de ma première mise en production. Du choix du VPS jusqu'au site live stable, en passant par le \u003Ccode>docker-compose.yml\u003C\u002Fcode> commenté, la sécurisation HTTPS et le monitoring des conteneurs — vous aurez tout ce qu'il faut pour franchir le pas sereinement. Si vous cherchez l'architecture complète headless dans laquelle s'inscrit ce déploiement, consultez mon retour d'expérience sur le \u003Ca href=\"\u002Fblog\u002Fprestashop\u002Farchitecture\u002Fhub-pro-headless-nuxt-docker\">Hub Pro headless Nuxt + Docker\u003C\u002Fa>.\u003C\u002Fp>\n\n\u003Ch2>Les 5 erreurs fatales du déploiement Docker PrestaShop en production\u003C\u002Fh2>\n\u003Cp class=\"article-nav-context\" style=\"font-size:0.9em;color:#64748b;margin:0.5em 0 1.5em;\">Cet article fait partie de notre dossier \u003Ca href=\"\u002Fblog\u002Fprestashop\u002Fperformance\u002F\" title=\"Articles performance\">performance\u003C\u002Fa>.\u003C\u002Fp>\n\n\n\u003Ctable class=\"article-table\">\n\u003Cthead>\n\u003Ctr>\u003Cth>Problématique\u003C\u002Fth>\u003Cth>Cause principale\u003C\u002Fth>\u003Cth>Impact métier\u003C\u002Fth>\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\u003Ctd>Perte de données après un \u003Ccode>docker compose down\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>Volumes anonymes au lieu de volumes nommés pour MariaDB\u003C\u002Ftd>\u003Ctd>Perte totale du catalogue produits et des commandes clients\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>Conteneurs exécutés en root\u003C\u002Ftd>\u003Ctd>Image par défaut sans directive \u003Ccode>USER\u003C\u002Fcode> ni remapping\u003C\u002Ftd>\u003Ctd>Faille de sécurité critique — un attaquant peut s'échapper du conteneur\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>Absence de healthcheck sur les services\u003C\u002Ftd>\u003Ctd>Pas de directive \u003Ccode>healthcheck\u003C\u002Fcode> dans le Compose\u003C\u002Ftd>\u003Ctd>PrestaShop démarre avant que MariaDB soit prête — erreurs 500 intermittentes\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>Image PHP non patchée en production\u003C\u002Ftd>\u003Ctd>Tag \u003Ccode>latest\u003C\u002Fcode> figé ou image jamais reconstruite\u003C\u002Ftd>\u003Ctd>Vulnérabilités connues exploitables (CVE), risque de compromission du serveur\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>Exposition directe du port 80\u002F443 sans reverse proxy\u003C\u002Ftd>\u003Ctd>Mapping de ports direct sur le conteneur PrestaShop\u003C\u002Ftd>\u003Ctd>Pas de terminaison TLS propre, pas de rate limiting, TTFB dégradé\u003C\u002Ftd>\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\n\u003Ch2>Stack de production Docker PrestaShop : le docker-compose.yml commenté\u003C\u002Fh2>\n\n\u003Cp>Voici la stack que j'utilise en production sur mes déploiements VPS. Elle comprend cinq services : \u003Cstrong>PrestaShop\u003C\u002Fstrong> (PHP-FPM), \u003Cstrong>MariaDB\u003C\u002Fstrong>, \u003Cstrong>Redis\u003C\u002Fstrong> pour le cache de sessions, \u003Cstrong>Nginx\u003C\u002Fstrong> en reverse proxy et \u003Cstrong>Certbot\u003C\u002Fstrong> pour le renouvellement automatique des certificats Let's Encrypt. L'ensemble tourne sur un VPS OVH (Hetzner ou Scaleway fonctionnent tout aussi bien) avec 4 Go de RAM minimum.\u003C\u002Fp>\n\n\u003Cp>Le principe fondamental : \u003Cstrong>séparer le réseau interne du réseau exposé\u003C\u002Fstrong>. Seul Nginx est accessible depuis l'extérieur. MariaDB, Redis et PHP-FPM communiquent uniquement sur un réseau Docker interne, invisible depuis Internet.\u003C\u002Fp>\n\n\u003Col>\n\u003Cli>\u003Cstrong>Provisionner le VPS\u003C\u002Fstrong> — Choisissez un VPS avec Ubuntu 22.04+ LTS, installez Docker Engine et Docker Compose v2 via le \u003Ca href=\"https:\u002F\u002Fdocs.docker.com\u002Fengine\u002Finstall\u002Fubuntu\u002F\" target=\"_blank\" rel=\"noreferrer noopener\">script officiel Docker\u003C\u002Fa>. Créez un utilisateur dédié non-root et ajoutez-le au groupe \u003Ccode>docker\u003C\u002Fcode>.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Structurer le projet\u003C\u002Fstrong> — Créez un répertoire \u003Ccode>\u002Fopt\u002Fprestashop-prod\u002F\u003C\u002Fcode> avec votre \u003Ccode>docker-compose.yml\u003C\u002Fcode>, un fichier \u003Ccode>.env\u003C\u002Fcode> (permissions 600) contenant les secrets (mots de passe DB, clé admin), et les dossiers de configuration Nginx.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Configurer les volumes nommés\u003C\u002Fstrong> — Déclarez explicitement vos volumes dans la section \u003Ccode>volumes:\u003C\u002Fcode> du Compose : \u003Ccode>db_data\u003C\u002Fcode> pour MariaDB, \u003Ccode>ps_data\u003C\u002Fcode> pour les fichiers PrestaShop (images produits, modules). Ne jamais utiliser de volumes anonymes en production.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Déclarer les healthchecks\u003C\u002Fstrong> — Ajoutez un \u003Ccode>healthcheck\u003C\u002Fcode> sur MariaDB (\u003Ccode>mysqladmin ping\u003C\u002Fcode>) et configurez \u003Ccode>depends_on\u003C\u002Fcode> avec \u003Ccode>condition: service_healthy\u003C\u002Fcode> sur le service PrestaShop. Cela évite les démarrages prématurés.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Configurer le reverse proxy Nginx\u003C\u002Fstrong> — Le conteneur Nginx écoute sur les ports 80 et 443, termine le TLS avec les certificats Let's Encrypt, et proxy les requêtes vers PHP-FPM sur le réseau interne.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Activer le renouvellement Certbot\u003C\u002Fstrong> — Un conteneur Certbot partage le volume des certificats avec Nginx. Attention aux \u003Ca href=\"https:\u002F\u002Fletsencrypt.org\u002Fdocs\u002Frate-limits\u002F\" target=\"_blank\" rel=\"noreferrer noopener\">rate limits Let's Encrypt\u003C\u002Fa> : en phase de test, utilisez le flag \u003Ccode>--staging\u003C\u002Fcode> pour éviter de vous bloquer (5 certificats identiques par semaine maximum).\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Définir la politique de redémarrage\u003C\u002Fstrong> — Utilisez \u003Ccode>restart: unless-stopped\u003C\u002Fcode> sur tous les services. Contrairement à \u003Ccode>always\u003C\u002Fcode>, cette politique respecte un arrêt manuel volontaire tout en assurant le redémarrage après un crash ou un reboot serveur.\u003C\u002Fli>\n\u003C\u002Fol>\n\n\u003Cp>Un point critique souvent négligé : le fichier \u003Ccode>.env\u003C\u002Fcode> ne doit jamais être commité dans Git. Ajoutez-le à votre \u003Ccode>.gitignore\u003C\u002Fcode> et transmettez-le manuellement sur le serveur via \u003Ccode>scp\u003C\u002Fcode> ou un gestionnaire de secrets. Les variables à externaliser au minimum : \u003Ccode>MYSQL_ROOT_PASSWORD\u003C\u002Fcode>, \u003Ccode>MYSQL_PASSWORD\u003C\u002Fcode>, \u003Ccode>PS_DOMAIN\u003C\u002Fcode>, \u003Ccode>ADMIN_MAIL\u003C\u002Fcode> et \u003Ccode>ADMIN_PASSWD\u003C\u002Fcode>.\u003C\u002Fp>\n\n\u003Cul>\n\u003Cli>\u003Cstrong>Redis comme cache de sessions\u003C\u002Fstrong> — Configurez le module PrestaShop pour stocker les sessions dans Redis plutôt que sur le filesystem. Gain mesuré : réduction du TTFB de 40 à 60% sur les pages authentifiées.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Bind mounts pour la configuration Nginx\u003C\u002Fstrong> — Les fichiers \u003Ccode>nginx.conf\u003C\u002Fcode> et les vhosts sont montés en bind mount (lecture seule avec \u003Ccode>:ro\u003C\u002Fcode>) pour faciliter les modifications sans reconstruire l'image.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Logs centralisés\u003C\u002Fstrong> — Configurez le driver de logs Docker en \u003Ccode>json-file\u003C\u002Fcode> avec rotation (\u003Ccode>max-size: 10m\u003C\u002Fcode>, \u003Ccode>max-file: 3\u003C\u002Fcode>) pour éviter que les logs saturent le disque du VPS.\u003C\u002Fli>\n\u003C\u002Ful>\n\n\u003Cp>Mon retour d'expérience personnel : sur mon propre Hub (\u003Ca href=\"\u002F\">alexandrecarette.fr\u003C\u002Fa>), j'ai migré d'un hébergement mutualisé vers un VPS OVH avec Docker Compose. Le premier déploiement a cassé la prod à cause d'un volume MariaDB non persistant lors d'un \u003Ccode>docker compose down\u003C\u002Fcode>. J'ai perdu 2 heures de données de test. Depuis, je sépare systématiquement les \u003Cstrong>volumes nommés\u003C\u002Fstrong> des bind mounts, et j'ai ajouté une sauvegarde automatique avec \u003Ccode>docker exec\u003C\u002Fcode> + cron vers un bucket S3. Un simple \u003Ccode>docker exec mariadb mysqldump -u root -p$MYSQL_ROOT_PASSWORD prestashop | gzip &gt; backup_$(date +%F).sql.gz\u003C\u002Fcode> dans un cron quotidien m'a évité bien des nuits blanches.\u003C\u002Fp>\n\n\u003Ch2>Checklist sécurité et performance pour la production\u003C\u002Fh2>\n\n\u003Cp>Selon \u003Ca href=\"https:\u002F\u002Fweb.dev\u002Farticles\u002Fttfb\" target=\"_blank\" rel=\"noreferrer noopener\">Google (web.dev)\u003C\u002Fa>, un TTFB inférieur à 800 ms est requis pour valider le critère « Good » des Core Web Vitals. Sur un VPS correctement configuré avec Docker, Redis et Nginx, j'obtiens régulièrement un TTFB entre 180 et 350 ms sur PrestaShop — contre 900 ms à 1,4 s sur un mutualisé classique. La différence est directement mesurable dans Google Search Console.\u003C\u002Fp>\n\n\u003Cp>PrestaShop représente environ 0,9 % des sites e-commerce mondiaux dans le top 1 million, soit plus de 300 000 boutiques actives selon \u003Ca href=\"https:\u002F\u002Fbuiltwith.com\u002F\" target=\"_blank\" rel=\"noreferrer noopener\">BuiltWith\u003C\u002Fa>. La plupart tournent encore sur du mutualisé. Ceux qui migrent vers un \u003Cstrong>VPS Docker\u003C\u002Fstrong> gagnent un avantage compétitif mesurable en performance et en SEO.\u003C\u002Fp>\n\n\u003Cp>Dans un projet récent pour un client dans le secteur du mobilier haut de gamme, j'ai déployé cette stack exacte sur un Hetzner CX31. Le passage du mutualisé OVH au VPS Docker a réduit le Largest Contentful Paint de 3,8 s à 1,6 s, et le taux de rebond mobile a baissé de 12 points en 3 semaines. Les \u003Ca href=\"https:\u002F\u002Fweb.dev\u002Farticles\u002Fvitals\" target=\"_blank\" rel=\"noreferrer noopener\">Core Web Vitals\u003C\u002Fa> sont passés intégralement au vert.\u003C\u002Fp>\n\n\u003Ch2>Les solutions pour sécuriser et monitorer votre stack Docker PrestaShop\u003C\u002Fh2>\n\n\u003Ctable class=\"article-table\">\n\u003Cthead>\n\u003Ctr>\u003Cth>Solution\u003C\u002Fth>\u003Cth>Complexité\u003C\u002Fth>\u003Cth>Gain estimé\u003C\u002Fth>\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\u003Ctd>Volumes nommés pour MariaDB et les assets PrestaShop\u003C\u002Ftd>\u003Ctd>Faible\u003C\u002Ftd>\u003Ctd>Zéro risque de perte de données lors des opérations Docker\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>Reverse proxy Nginx avec terminaison TLS\u003C\u002Ftd>\u003Ctd>Moyenne\u003C\u002Ftd>\u003Ctd>TTFB réduit de 30 à 50%, headers de sécurité (HSTS, CSP) centralisés\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>Restriction de l'accès \u003Ccode>\u002Fadmin\u003C\u002Fcode> par IP dans Nginx\u003C\u002Ftd>\u003Ctd>Faible\u003C\u002Ftd>\u003Ctd>Blocage de 99% des tentatives de brute force sur le back-office\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>Healthchecks + \u003Ccode>depends_on: condition\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>Faible\u003C\u002Ftd>\u003Ctd>Élimination des erreurs 500 au démarrage, redémarrages propres\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>Monitoring avec \u003Ccode>docker stats\u003C\u002Fcode> et alertes cron\u003C\u002Ftd>\u003Ctd>Moyenne\u003C\u002Ftd>\u003Ctd>Détection proactive des fuites mémoire et de la saturation disque\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>Sauvegarde automatisée \u003Ccode>mysqldump\u003C\u002Fcode> + S3\u003C\u002Ftd>\u003Ctd>Moyenne\u003C\u002Ftd>\u003Ctd>RPO de 24h maximum, restauration en moins de 10 minutes\u003C\u002Ftd>\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\n\u003Cp>Pour le monitoring quotidien, trois commandes suffisent :\u003C\u002Fp>\n\n\u003Cul>\n\u003Cli>\u003Ccode>docker stats --no-stream\u003C\u002Fcode> — Vue instantanée de la consommation CPU, RAM et réseau de chaque conteneur.\u003C\u002Fli>\n\u003Cli>\u003Ccode>docker system df\u003C\u002Fcode> — Espace disque utilisé par les images, conteneurs et volumes. Indispensable pour anticiper la saturation.\u003C\u002Fli>\n\u003Cli>\u003Ccode>docker logs --since 1h prestashop\u003C\u002Fcode> — Filtrer les logs récents pour identifier rapidement les erreurs PHP ou les timeouts.\u003C\u002Fli>\n\u003C\u002Ful>\n\n\u003Cp>N'oubliez pas de désactiver le \u003Cstrong>mode debug PrestaShop\u003C\u002Fstrong> en production (\u003Ccode>_PS_MODE_DEV_\u003C\u002Fcode> à \u003Ccode>false\u003C\u002Fcode>) et d'activer les headers HSTS dans votre configuration Nginx (\u003Ccode>Strict-Transport-Security: max-age=31536000; includeSubDomains\u003C\u002Fcode>). Ces deux réglages prennent 30 secondes et changent radicalement la posture de sécurité de votre boutique.\u003C\u002Fp>\n\n\u003Cblockquote class=\"expert-quote\">\n\u003Cp>\"Use restart policies and limits on resources to prevent containers from consuming too many resources and ensure host machines remain stable. Configure logging drivers to aggregate logs efficiently and prevent sensitive data from being stored locally.\"\u003C\u002Fp>\n— \u003Ca href=\"https:\u002F\u002Fdocs.docker.com\u002Fcompose\u002Fproduction\u002F\" target=\"_blank\" rel=\"noreferrer noopener\">Docker Documentation\u003C\u002Fa>, \u003Ccite>Use Compose in production\u003C\u002Fcite> (2025)\n\u003C\u002Fblockquote>\n\n\u003Cp>Une fois votre VPS Docker opérationnel et stable, l'étape suivante logique est d'automatiser vos déploiements. J'ai documenté tout le pipeline dans mon article sur le \u003Ca href=\"\u002Fblog\u002Fprestashop\u002Fdeveloppement\u002Fcicd-github-actions-headless-nuxt\">CI\u002FCD GitHub Actions pour PrestaShop headless\u003C\u002Fa> — un \u003Ccode>git push\u003C\u002Fcode> sur main déclenche le build, les tests et le déploiement automatique sur le VPS.\u003C\u002Fp>\n\n\u003Ch2>Conclusion : votre boutique PrestaShop mérite une infrastructure solide\u003C\u002Fh2>\n\n\u003Cp>Déployer \u003Cstrong>PrestaShop avec Docker sur un VPS\u003C\u002Fstrong> n'est pas réservé aux DevOps seniors. Avec un \u003Ccode>docker-compose.yml\u003C\u002Fcode> bien structuré, des volumes nommés, un reverse proxy Nginx et des healthchecks, vous obtenez une infrastructure de production fiable, performante et reproductible. Les gains sont concrets : un TTFB divisé par trois ou quatre, des Core Web Vitals au vert, et la tranquillité d'esprit d'une stack que vous maîtrisez de bout en bout. La clé, c'est de ne jamais déployer en production sans avoir testé chaque brique séparément — et de toujours avoir une sauvegarde automatisée.\u003C\u002Fp>\n\n\u003Cp>Vous préférez vous concentrer sur votre business ? Je prends en charge la configuration complète de votre \u003Cstrong>stack Docker PrestaShop\u003C\u002Fstrong> — du provisioning VPS à la mise en production sécurisée. Discutons de votre projet : \u003Ca href=\"mailto:contact@alexandrecarette.fr\">contact@alexandrecarette.fr\u003C\u002Fa>\u003C\u002Fp>\n\n\u003Cdiv class=\"article-sources\">\n\u003Ch3>Sources et références\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fdocs.docker.com\u002Fcompose\u002Fproduction\u002F\" target=\"_blank\" rel=\"noreferrer noopener\">Docker Documentation — Use Compose in production\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fdocs.docker.com\u002Fengine\u002Fsecurity\u002Fsecurity\u002F\" target=\"_blank\" rel=\"noreferrer noopener\">Docker Documentation — Docker security\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fhub.docker.com\u002Fr\u002Fprestashop\u002Fprestashop\" target=\"_blank\" rel=\"noreferrer noopener\">Docker Hub — Image officielle PrestaShop\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fweb.dev\u002Farticles\u002Fvitals\" target=\"_blank\" rel=\"noreferrer noopener\">Google web.dev — Core Web Vitals\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fweb.dev\u002Farticles\u002Fttfb\" target=\"_blank\" rel=\"noreferrer noopener\">Google web.dev — Time to First Byte (TTFB)\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fletsencrypt.org\u002Fdocs\u002Frate-limits\u002F\" target=\"_blank\" rel=\"noreferrer noopener\">Let's Encrypt — Rate Limits\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fdiv>\n\u003Cdiv style=\"background:#f8fafc;border-left:4px solid #4F46E5;padding:16px 20px;margin:24px 0;\">\u003Cp style=\"margin:0;font-size:14px;\">\u003Cstrong>Approfondir dans l'Academy\u003C\u002Fstrong>\u003C\u002Fp>\u003Cp style=\"margin:4px 0 0;font-size:13px;\">\u003Ca href=\"\u002Facademy\u002Fdevops-docker-deploy\" style=\"text-decoration:underline;color:#4F46E5;\">Module : DevOps Solo : Docker, PM2, Zero-Downtime →\u003C\u002Fa>\u003C\u002Fp>\u003C\u002Fdiv>\n\n\u003Cdiv class=\"articles-lies\" style=\"margin:2em 0;padding:1.5em;border:1px solid #e2e8f0;border-radius:12px;background:#f8fafc;\">\n\u003Ch3 style=\"margin:0 0 0.8em 0;font-size:1em;color:#334155;\">Articles dans le même univers\u003C\u002Fh3>\n\u003Cul style=\"margin:0;padding-left:1.2em;list-style:disc;\">\n\u003Cli>\u003Ca href=\"\u002Fblog\u002Fprestashop\u002Fperformance\u002Fprestashop-hosting-ovh-guide-complet-ecommercants\">Prestashop hosting OVH : guide complet pour e-commerçants\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"\u002Fblog\u002Fprestashop\u002Fperformance\u002Fcore-web-vitals-prestashop-pagespeed-95\">Core Web Vitals PrestaShop : passer de 30 à 95 sur PageSpeed\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"\u002Fblog\u002Fprestashop\u002Fdeveloppement\u002Fcicd-github-actions-headless-nuxt\">CI\u002FCD e-commerce : déployer PrestaShop Headless via GitHub Actions\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"\u002Fblog\u002Fprestashop\u002Farchitecture\u002Fdocker-headless-multi-conteneurs\">Docker PrestaShop Headless : architecture multi-conteneurs en prod\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fdiv>",[214,217,220,223,226,229,232,235,238,241,244,247,250,253,256],{"q":215,"a":216},"Pourquoi utiliser Docker pour PrestaShop plutôt qu'un hosting traditionnel ?","Docker offre une isolation totale des services (PHP, MariaDB, Nginx) et une réplica exacte entre développement et production, éliminant les « chez moi ça marche ». Sur VPS, vous contrôlez l'infrastructure complète et les coûts restent 40 à 60 % moins élevés qu'un hébergement managed pour un trafic équivalent.",{"q":218,"a":219},"Quel VPS choisir pour Docker PrestaShop en production ?","Minimum 4 Go RAM et 2 vCPU pour une boutique de 5k produits avec peak 200 visiteurs\u002Fjour. Vérifiez le support KVM (pas OpenVZ), l'IPv6 natif, et préférez des datacenters en Europe pour la RGPD. OVH, Scaleway ou Vultr répondent à ces critères sans surcoût.",{"q":221,"a":222},"Faut-il utiliser Docker Compose ou Kubernetes pour PrestaShop ?","Docker Compose suffit amplement pour une instance unique PrestaShop. Kubernetes est une surcharge opérationnelle inutile à ce stade. Upgrader vers K8S quand vous passez 50+ boutiques multi-tenant, pas avant.",{"q":224,"a":225},"Comment persister les données PrestaShop dans Docker sans les perdre ?","Utilisez des volumes nommés Docker (pas de bind mounts locaux) pour MariaDB et le répertoire uploads\u002F. Configurez une sauvegarde quotidienne des volumes vers un stockage externe (S3, Scaleway, réseau) — un conteneur qui crash ne doit jamais signifier une perte de données.",{"q":227,"a":228},"Comment gérer les certificats SSL\u002FTLS dans Docker PrestaShop ?","Deployez Let's Encrypt avec certbot en conteneur séparé ou via acme.sh. Montez le certificat en read-only dans Nginx et configurez l'auto-renouvellement via cron sur l'hôte. Un certificat expiré en production = downtime totale : automatisez, ne comptez pas sur une alerte manuelle.",{"q":230,"a":231},"Quel reverse proxy utiliser devant Docker PrestaShop ?","Nginx en conteneur ou sur l'hôte. Nginx est léger, performant, et se configure en une dizaine de lignes. Apache ajoute de la RAM inutile. Configurez-le comme reverse proxy vers le conteneur PHP, pas en mode FastCGI direct.",{"q":233,"a":234},"Combien de ressources CPU\u002FRAM faut-il pour Docker PrestaShop ?","MariaDB consomme 1-1,5 Go RAM fixe. PHP-FPM utilise 20-40 Mo par worker selon les plugins. Nginx : 5-10 Mo. Pour une boutique standard, 4 Go total permet 30-50 workers PHP concurrents sans swap.",{"q":236,"a":237},"Comment monitorer les conteneurs Docker PrestaShop en production ?","Configurez docker stats sur un script de polling. Loggez la sortie standard des conteneurs via journald ou splunk. Mettez en alerte sur CPU > 80 % sustained et RAM > 85 %. Un crash silencieux de PHP sans log = monitoring défaillant.",{"q":239,"a":240},"Faut-il générer les logs Docker vers syslog ou fichiers locaux ?","Fichiers locaux sur l'hôte (via le driver json-file), centralisés en daily rotations. Syslog ajoute une dépendance réseau. Stockez 15 jours minimum, indexez sur date et conteneur pour déboguer rapidement.",{"q":242,"a":243},"Comment mettre à jour PrestaShop en production sans downtime ?","Blue-green deploy : lancez un second conteneur PrestaShop avec la nouvelle version, testez en interne, puis basculez le reverse proxy vers le nouveau. Rollback instantané en cas d'erreur. Docker rend ce pattern trivial si vous planifiez les volumes correctement.",{"q":245,"a":246},"Docker expose les ports de MariaDB et Redis, c'est grave ?","Oui, critique. Exposez ZÉRO port vers l'extérieur sauf HTTP(S). MariaDB et Redis restent en réseau Docker interne. Authentifiez fermement même en réseau interne — un mot de passe fort n'est pas optionnel.",{"q":248,"a":249},"Quel est le coût réel d'un VPS Docker PrestaShop à l'année ?","VPS 4 Go : 60-120 € HT\u002Fmois selon le datacentre. Plus domaine (10 €\u002Fan), certificat (gratuit Let's Encrypt), backups externes (5-15 €\u002Fmois). Total : 900-1800 € HT\u002Fan pour une infrastructure souveraine et maintenable.",{"q":251,"a":252},"Comment automatiser la sauvegarde des bases de données Docker ?","Cron hourly qui lance mysqldump via docker exec, compresse le fichier SQL et l'envoie vers S3\u002FScaleway. Vérifiez l'intégrité du backup par un test de restauration mensuel — une sauvegarde jamais testée n'existe pas.",{"q":254,"a":255},"Que faire si PrestaShop rencontre une erreur fatale dans Docker ?","Vérifiez docker logs {nom_conteneur}. 90 % des cas : permissions de dossier, variables d'environnement manquantes, ou MariaDB down. N'escaladez jamais en relançant le conteneur aveuglément — lisez la stack trace d'abord.",{"q":257,"a":258},"Peut-on migrer PrestaShop traditionnel vers Docker sans downtime ?","Oui : déployez Docker sur le même VPS ou un nouveau, restaurez la base et uploads depuis backup, testez en interne. Basculez DNS quand tout fonctionne. Moins de 5 minutes de downtime si préparé correctement — le jour J.","Docker PrestaShop VPS : guide complet pour déployer, sécuriser et optimiser votre boutique PrestaShop avec Docker Compose sur un VPS en production.","",8,[],[264,278,288,301],{"id":265,"title":266,"category":207,"subcategory":267,"slug":268,"linkRewrite":269,"excerpt":270,"coverImage":271,"thumbnailImage":272,"nuxtUrl":273,"datePublished":274,"dateUpdated":275,"readingTime":276,"faqCount":277},106,"Master Data Management grossiste food PrestaShop : table souveraine","architecture","architecture--mdm-grossiste-food-prestashop","prestashop--architecture--mdm-grossiste-food-prestashop","Comment une table MDM unique remplace 4 features PrestaShop natives pour gérer DLC, lots, calibres et allergènes. Retour Palimex 1082 produits.","https:\u002F\u002Falexandrecarette.fr\u002Fblog-covers\u002Fcover-master-data-management-1776574808.webp","https:\u002F\u002Falexandrecarette.fr\u002Fblog-covers\u002Fthumb-master-data-management-1776574808.webp","\u002Fblog\u002Fprestashop\u002Farchitecture\u002Fmdm-grossiste-food-prestashop","2026-04-19T05:03:33.000Z","2026-04-20T05:03:59.000Z",11,15,{"id":279,"title":198,"category":207,"subcategory":208,"slug":280,"linkRewrite":281,"excerpt":282,"coverImage":283,"thumbnailImage":284,"nuxtUrl":199,"datePublished":285,"dateUpdated":286,"readingTime":287,"faqCount":277},89,"performance--core-web-vitals-prestashop-pagespeed-95","prestashop--performance--core-web-vitals-prestashop-pagespeed-95","Core Web Vitals PrestaShop : méthode complète pour passer de 30 à 95 sur PageSpeed. LCP, INP, CLS, cache, images, JS — guide expert 2026.","https:\u002F\u002Falexandrecarette.fr\u002Fblog-covers\u002Fcover-core-web-vitals-1775555697.webp","https:\u002F\u002Falexandrecarette.fr\u002Fblog-covers\u002Fthumb-core-web-vitals-1775555697.webp","2026-04-07T09:56:51.000Z","2026-04-12T11:33:47.000Z",10,{"id":289,"title":290,"category":207,"subcategory":291,"slug":292,"linkRewrite":293,"excerpt":294,"coverImage":295,"thumbnailImage":296,"nuxtUrl":297,"datePublished":298,"dateUpdated":299,"readingTime":300,"faqCount":277},85,"API WebService PrestaShop : guide complet pour l'intégrer en 2026","developpement","developpement--api-webservice-prestashop-guide-complet","prestashop--developpement--api-webservice-prestashop-guide-complet","API WebService PrestaShop : activez, sécurisez et interrogez l'API REST native. Guide complet avec exemples curl, PHP, Python et erreurs courantes.","https:\u002F\u002Falexandrecarette.fr\u002Fblog-covers\u002Fcover-api-webservice-prestashop-1775284236.webp","https:\u002F\u002Falexandrecarette.fr\u002Fblog-covers\u002Fthumb-api-webservice-prestashop-1775284236.webp","\u002Fblog\u002Fprestashop\u002Fdeveloppement\u002Fapi-webservice-prestashop-guide-complet","2026-04-04T06:32:35.000Z","2026-04-08T07:50:50.000Z",12,{"id":302,"title":303,"category":207,"subcategory":267,"slug":304,"linkRewrite":305,"excerpt":306,"coverImage":307,"thumbnailImage":308,"nuxtUrl":309,"datePublished":310,"dateUpdated":311,"readingTime":312,"faqCount":277},84,"PrestaShop WebServices + Nuxt 3 — intégration headless complète","architecture--webservices-nuxt-integration-headless","prestashop--architecture--webservices-nuxt-integration-headless","PrestaShop WebServices et Nuxt 3 : guide technique pas-à-pas pour une intégration headless performante. Clé API, composables, SSR, cache Redis et SEO.","https:\u002F\u002Falexandrecarette.fr\u002Fblog-covers\u002Fcover-prestashop-webservices-nuxt-1775283999.webp","https:\u002F\u002Falexandrecarette.fr\u002Fblog-covers\u002Fthumb-prestashop-webservices-nuxt-1775283999.webp","\u002Fblog\u002Fprestashop\u002Farchitecture\u002Fwebservices-nuxt-integration-headless","2026-04-04T06:28:50.000Z","2026-04-09T05:02:18.000Z",13]