La contrainte du VPS unique
La majorité des projets e-commerce en phase de croissance ne disposent pas de deux serveurs dédiés. L'objectif est donc de faire cohabiter production et préproduction sur une seule machine, sans qu'elles puissent s'affecter mutuellement. Docker rend cela possible et élégant.
L'isolation par réseaux Docker
La solution repose sur deux réseaux internes étanches :
ac_network— Réseau de production :ac_nuxt,ac_prestashop,ac_mariadb,ac_redispreprod_network— Réseau de préproduction :preprod_nuxt,preprod_prestashop,preprod_mariadb,preprod_redis
Les bases de données sont physiquement séparées. Il est impossible qu'un test en préproduction corrompe les données de production. C'est la garantie fondamentale de l'architecture.
Nginx comme chef d'orchestre
Le conteneur Nginx est le seul élément connecté aux deux réseaux simultanément. Il agit comme reverse proxy intelligent : selon le nom de domaine entrant, il route vers le bon environnement.
alexandrecarette.fr→ac_nuxt:3000(production)preprod.alexandrecarette.fr→preprod_nuxt:3000(préproduction)preprod.alexandrecarette.fr/admin_preprod/→preprod_prestashop:80
Chaque environnement dispose de son propre certificat Let's Encrypt. La préproduction peut être protégée par une authentification HTTP Basic pour bloquer les robots et les concurrents.
Points de vigilance à l'implémentation
- Vérifier que
var/cache,var/log,var/sessionssont owned parwww-data— un dossierrootgénère des 500 silencieux en prod. - Ne jamais utiliser
docker cpsur un dossier complet — bug de corruption connu. Passer par une archive tar. - Le header
Hostenvoyé par Nuxt vers PrestaShop doit êtrepsHost, jamaispsFrontUrl— sinon PrestaShop répond en 302.