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.
- 1 service PrestaShop (accessible sur localhost:8080)
- 1 service Mariadb
- 1 service PhpMyAdmin (accessible sur localhost:8081)
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