Docker avec PrestaShop

Docker permet de configurer un environnement local identique à celui que vous disposerez en production. Nous allons voir comment utiliser docker avec PrestaShop (et PhpMyAdmin).

Installer PrestaShop avec Docker

On part du principe que vous disposez déjà de Docker sur votre machine.

Placez-vous dans le dossier de votre futur projet PrestaShop, sur votre machine.

Ensuite il ne vous reste plus cas cloner ce repository.

Ce qui donne :

git clone https://github.com/eewee/docker-prestashop-phpmyadmin .

Puis exécuter la commande suivante :

docker-compose up

C’est terminé.

Vous disposez à présent de PrestaShop avec une db mariadb et PMA.

Contenu du Docker-compose.yml

version: "3.9"
services:
  # SOURCE : https://hub.docker.com/r/prestashop/prestashop/
  prestashop:
    image: prestashop/prestashop:1.7-7.3-apache
    restart: always
    networks:
      - prestashop
    ports:
      - 8080:80
    links:
      - mariadb:mariadb
    depends_on:
      - mariadb
    volumes:
      - ./:/var/www/html
      - ./modules:/var/www/html/modules
      - ./themes:/var/www/html/themes
      - ./override:/var/www/html/override
    environment:
      - PS_DEV_MODE=1
      - PS_INSTALL_AUTO=0
      - DB_NAME=prestashop
      - DB_SERVER=mariadb
      - DB_USER=root
      - DB_PASSWD=mycustompassword

  # SOURCE : https://hub.docker.com/_/mariadb
  mariadb:
    image: mariadb
    restart: always
    networks:
      - prestashop
    volumes:
      - db_data:/var/lib/mysql
    environment:
      - MYSQL_DATABASE=prestashop
      - MYSQL_ROOT_PASSWORD=mycustompassword

  # SOURCE : https://hub.docker.com/_/phpmyadmin
  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    restart: always
    networks:
      - prestashop
    links:
      - mariadb:mariadb
    ports:
      - 8081:80
    depends_on:
      - mariadb
    environment:
      - PMA_HOST=mariadb
      - PMA_USER=root
      - PMA_PASSWORD=mycustompassword

networks:
  prestashop:

volumes:
  db_data:

Explications

Nous allons utiliser la version 3.9 avec 3 services.

NB : vous pouvez rajouter tous les services dont vous avez besoin dans ce fichier.

Service PrestaShop

Nous partons d’une base sous Apache de PrestaShop en v1.7 et PHP en v7.3.
Qui restart systématiquement en cas de problème.
Sur le port local 8080 qui pointe sur le port 80 du container PrestaShop.
On indique qu’il y a un lien avec la db (ici mariadb).
Qu’il faut que le container mariadb soit disponible avant le container PrestaShop.
On indique les volumes locaux en synchro avec les volumes du container PrestaShop.
Et pour finir, on configure quelques variables d’environnements :

  • Activation du mode debug
  • Infos de la db (nom du serveur, base, user et mot de passe).
  • etc …

Lors de votre installation de PrestaShop,
vous devrez indiquer les informations de db suivantes :

  • host : mariadb
  • db : prestashop
  • user : root
  • password : mycustompassword

Service Mariadb

Nous partons d’une image mariadb.
Qui restart systématiquement en cas de problème.
Avec une synchro de volume et 2 variables d’environnements :

  • Le nom de la base de donnée
  • Le mot de passe de la base de donnée

Service PhpMyAdmin

Nous partons d’une image phpmyadmin.
Elle nous permettra de visualiser la db sur une interface web.
On reste dans l’esprit des autres services.
Ici on utilise un autre port pour accéder à PMA, qui sera en local le 8081.

Voici les informations de connexion à PMA :

  • login : root
  • pwd : mycustompassword

Evolution

Vous pourriez rajouter d’autre service, comme un « mailcatcher » pour ne pas expédier réellement les emails provenant de votre PrestaShop durant la phase de développement.

Ressources

https://github.com/eewee/docker-prestashop-phpmyadmin

https://hub.docker.com/r/prestashop/prestashop/
https://hub.docker.com/_/mariadb
https://hub.docker.com/_/phpmyadmin

Michael

Développeur / intégrateur, travaillant en agence web depuis 2005, je viens à présent vous proposer de venir découvrir mes créations personnelles de plugins / themes pour le CMS Wordpress & Prestashop, quelques solutions en mode SAAS & un peu d'actualité web ( / Twitter).

Vous aimerez aussi...