Documentation et ressources officielles

Cours et Tutoriels officiels

Documentation officieuse

Dockers

alexcheng1982/docker-magento2

Version testée: tag 2.3.1.

Petite particularité liée à ma VM Ubuntu: veiller à ce que le docker proxy soit down pour éviter un conflit de ports sortants avec le container web du projet et une erreur nginx en front.

Procédure de déploiement:

Voir le fichier readme.md pour une doc d’install complète.

  • $ git clone https://github.com/alexcheng1982/docker-magento2.git
  • Pour choisir la version de Magento 2 souhaitée, ajouter --branch 2.2.5 --single-branch à la commande juste au-dessus (où 2.2.5 est un tag en référence à la version à prendre en compte).
  • $ cd docker-magento2
Si utilisation pour développer:

Manips nécessaires uniquement si vous souhaitez développer. Dans le cas contraire, vous pouvez sauter cette partie et vous rendre directement à la section suivante « Si utilisation pas pour développer ».

Remplacer le fichier docker-compose.yml de base par celui suffixé par *-dev:

$ cp docker-compose.yml _docker-compose.yml && cp docker-compose-dev.yml docker-compose.yml

Le nouveau fichier docker-compose.yml peut comporter une erreur (rencontrée avec le tag 2.2.5) qu’il faut corriger. Remplacer la ligne 4: build: . par: build: ./developer.

Si utilisation pas pour développer (bricolage en admin, simple affichage d’une boutique en front, …):
  • $ docker-compose up -d
  • $ docker exec -it docker-magento2_web_1 install-magento
  • Et si vous souhaitez les sample datas (une boutique de demo): $ docker exec -it docker-magento2_web_1 install-sampledata

Puis modifier le fichier hosts de Windows en rajoutant la ligne:
<IP_de_votre_machine_virtuelle> local.magento.

Le site est accessible en front via l’URL: http://local.magento.

L’interface admin est accessible via l’URL http://local.magento/admin avec les username/password admin/magentorocks1.

Lancer des commandes bin/magento pour les développeurs:

docker exec -it docker-magento2_web_1 ./bin/magento <commande> or you can enter inside the container with docker exec -it docker-magento2_web_1 bash and then execute ./bin/magento <commande>.

Persistance des données:

Pour conserver l’install et les sample data après redémarrage de la machine virtuelle, il faut stopper les dockers plutôt que de les down -v.
$ docker-compose stop et $ docker-compose start pour redémarrer.

Par défaut, les fichiers stockés hors container le sont à la racine du système Ubuntu (deux dossiers plus haut que /home/intlangf).

Des fichiers de travail en local (hors container):

L’auteur évoque la possibilité de conserver les dossier extensions et thèmes en local sur la machine et d’utiliser Docker Compose volumes pour les installer. Il donne l’exemple suivant en partant de son fichier docker-compose.yml:

Au lancement du container web, un chemin/des dossiers /dev/mytheme sera créé sur la machine locale, à la racine de Ubuntu. C’est dans ce dossier qu’il faudra travailler pour le développement du theme mytheme. Il fait mirroir au chemin /var/www/html/app/design/frontend/mytheme/default présent quant à lui dans le container.

Pour moi (auteur du blog), pour avoir en local les fichiers d’un thème custom/default:

https://github.com/clean-docker/Magento2

Pas testé.

Docker Image to Magento 2 local development in Mac, Linux and Windows

Pas testé. Inclus grunt.

Utilisation de Grunt pour compiler les sources .less

Development starter themes

Luma Child Theme Starter Files (Magento 2)

Rocket Web Magento 2 theme prime

Installer avec le Docker alexcheng1982/docker-magento2

$ composer require rocketweb/theme-frontend-prime; docker exec -it docker-magento2_web_1 bin/magento module:enable RocketWeb_UiCore; docker exec -it docker-magento2_web_1 bin/magento module:enable RocketWeb_CheckoutEnhancement; docker exec -it docker-magento2_web_1 bin/magento setup:upgrade; docker exec -it docker-magento2_web_1 bin/magento setup:di:compile; docker exec -it docker-magento2_web_1 bin/magento cache:flush

Troubleshooting:

Après install du thème si l’accès au front merde…

…en affichant l’erreur PHP suivante:

Fatal error: Uncaught RuntimeException: Can’t create directory /var/www/html/generated/code/Magento/Framework/App/ResourceConnection/. Class Magento\Framework\App\ResourceConnection\Proxy generation error: The requested class did not generate properly, because the ‘generated’ directory permission is read-only. If — after running the ‘bin/magento setup:di:compile’ CLI command when the ‘generated’ directory permission is set to write — the requested class did not generate properly, then you must add the generated class object to the signature of the related construct method, only. in /var/www/html/vendor/magento/framework/Code/Generator.php:135 Stack trace: #0 /var/www/html/vendor/magento/framework/Code/Generator/Autoloader.php(35): Magento\Framework\Code\Generator->generateClass(‘Magento\\Framewo…’) #1 [internal function]: Magento\Framework\Code\Generator\Autoloader->load(‘Magento\\Framewo…’) #2 [internal function]: spl_autoload_call(‘Magento\\Framewo…’) #3 /var/www/html/vendor/magento/framework/Code/Reader/Class in /var/www/html/vendor/magento/framework/Code/Generator.php on line 135

Lancer la commande suivante:
$ docker exec -it docker-magento2_web_1 bin/magento setup:di:compile

Tutoriels développement de thèmes

Extensions

Page builders/WYSIWYG

Gratuits

Payants

Certification Magento 2 (Front End)