Commerce & paiement
Boutique en ligne : PrestaShop
Section intitulée « Boutique en ligne : PrestaShop »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/v1alpha2kind: Blueprintproject: 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/. SansPS_FOLDER_ADMIN, l’image le renomme au hasard (admin749q8f…), un nom qu’il faudrait aller lire dans le conteneur.admin-devest 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_DOMAINreprend 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/htmlest 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, puisprestashop.prestashopdéclaredependsOn: [mysql]etmysqlun 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 pasprestashoppendant son installation : une installation coupée laisse une base à moitié remplie, et l’image ne sait pas la reprendre. - Le fichier
proxy-https.confdit à 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 lienshttp://. - 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.