Aller au contenu

Commerce & paiement

PrestaShop (licence OSL 3.0) est une solution de boutique en ligne complète : catalogue, panier, commandes, paiements, livraison, thèmes et modules. L’image officielle prestashop/prestashop sait s’installer seule au premier démarrage (PS_INSTALL_AUTO=1) : elle crée les tables, la boutique, le compte administrateur et le thème. Le blueprint s’importe donc sans étape à la main : une fois le déploiement terminé, la boutique répond et le back-office accepte votre identifiant.

Deux services : PrestaShop et son MySQL. La base est un service plutôt qu’un add-on parce que PrestaShop veut l’hôte, l’utilisateur, le mot de passe et le nom de la base dans quatre variables séparées, alors qu’une liaison d’add-on MySQL n’en remet qu’une, sous forme d’URL. Le lien entre les deux services fournit l’hôte et le port, et recopie l’utilisateur, le mot de passe et la base depuis MySQL : ils ne sont saisis qu’une fois.

apiVersion: cassiope.eu/v1alpha2
kind: Blueprint
project:
slug: ma-boutique
name: Ma boutique
environments:
- slug: production
name: Production
services:
- slug: mysql
name: Base de la boutique
type: worker
source:
imageRef: mysql:8.4
healthcheckCommand: mysqladmin ping -h 127.0.0.1
resources: { cpuMillicores: 500, ramMb: 1024 }
env:
- key: MYSQL_DATABASE
value: prestashop
- key: MYSQL_USER
value: prestashop
- key: MYSQL_PASSWORD
fromSecret: true
- key: MYSQL_ROOT_PASSWORD
fromSecret: true
volumes:
- { name: donnees, sizeGb: 10, mountPath: /var/lib/mysql }
exposure: { port: 3306, protocol: tcp }
- slug: prestashop
name: Boutique
type: web
dependsOn: [mysql]
source:
imageRef: prestashop/prestashop:9.1.5-apache
portsExposes: "80"
publiclyExposed: true
resources: { cpuMillicores: 1000, ramMb: 2048 }
env:
- key: PS_INSTALL_AUTO
value: "1"
- key: PS_DOMAIN
value: ${CASSIOPE_PUBLIC_HOST}
- key: PS_ENABLE_SSL
value: "1"
- key: PS_FOLDER_ADMIN
value: admin-dev
- key: PS_LANGUAGE
value: fr
- key: PS_COUNTRY
value: FR
- key: DB_SERVER
value: ${DB_HOST}
- key: ADMIN_MAIL
fromSecret: true
- key: ADMIN_PASSWD
fromSecret: true
volumes:
- { name: boutique, sizeGb: 10, mountPath: /var/www/html }
files:
- mountPath: /etc/apache2/conf-enabled/proxy-https.conf
content: |
SetEnvIf X-Forwarded-Proto "https" HTTPS=on
links:
- from: prestashop
to: mysql
envKeyPrefix: DB
envCopies:
- { from: MYSQL_DATABASE, as: DB_NAME }
- { from: MYSQL_USER, as: DB_USER }
- { from: MYSQL_PASSWORD, as: DB_PASSWD }

À l’import, trois valeurs sont demandées : le mot de passe de l’utilisateur MySQL, celui de root, et l’identifiant du compte administrateur (ADMIN_MAIL, ADMIN_PASSWD : 8 caractères au moins). Générez les mots de passe MySQL avec openssl rand -hex 24.

{
"values": {
"production/mysql": {
"MYSQL_PASSWORD": "à générer",
"MYSQL_ROOT_PASSWORD": "à générer"
},
"production/prestashop": {
"ADMIN_MAIL": "vous@ma-boutique.fr",
"ADMIN_PASSWD": "un mot de passe d'au moins 8 caractères"
}
}
}

Ce qu’il faut savoir :

  • Premier démarrage : comptez quelques minutes. PrestaShop attend sa base, puis installe. Le site répond dès que l’installation est terminée ; il n’y a rien à valider.
  • Le back-office est à /admin-dev/. Sans PS_FOLDER_ADMIN, l’image le renomme au hasard (admin749q8f…), un nom qu’il faudrait aller lire dans le conteneur. admin-dev est un nom connu d’avance ; changez-le dans le back-office si vous préférez un autre chemin.
  • L’adresse est figée à l’installation. PrestaShop enregistre son nom de domaine en base : PS_DOMAIN reprend l’adresse publique du service (${CASSIOPE_PUBLIC_HOST}). Pour passer à votre propre nom de domaine, ajoutez-le au service puis modifiez-le aussi dans le back-office (Paramètres de la boutique → Trafic & SEO → URL).
  • Le volume /var/www/html est indispensable. Il porte le code, les images des produits, les thèmes et les modules que vous installez ; il est aussi ce qui permet à l’image d’écrire son installation (sans lui, l’étape de renommage du dossier d’administration échoue sur certains systèmes de fichiers).
  • Ordre de déploiement : mysql, puis prestashop. prestashop déclare dependsOn: [mysql] et mysql un healthcheck : en cochant « Déployer après l’application », la plateforme lance la base, attend qu’elle réponde, puis la boutique. N’interrompez pas ni ne relancez pas prestashop pendant son installation : une installation coupée laisse une base à moitié remplie, et l’image ne sait pas la reprendre.
  • Le fichier proxy-https.conf dit à Apache que la requête est en HTTPS quand le proxy de la plateforme le lui indique ; sans lui, le back-office génère des liens http://.
  • Le paiement se branche par un module (Stripe, PayPal…) depuis le back-office ; ses clés vous appartiennent et ne se mettent pas dans le blueprint.