Utiliser composer et bin/console de votre image docker directement depuis PHPSTORM

Ok, vous êtes comme moi. Votre machine n’a rien d’installé en local. Pas même composer et même pas PHP en CLI !

Alors que vous utilisez PHP et peut être bien Symfony (ou pas) vous avez besoin dans tous les cas d’utiliser composer quotidiennement. Vous utilisez tous les jours PhpStorm et vous vous dites que c’est dommage de ne pas bénéficier de toutes les options de votre IDE notamment tout ce qui concerne composer et la console Symfony. Alors comment configurer PhpStorm pour spécifier que le composer de votre projet se trouve dans l’image docker ?

Voici un exemple de docker-compose.yml Dans les faits vous utiliserez le votre avec votre php/composer dedans.

version: "3.8"
services:
  apache_server:
    image: 'devpartitech/php:7.4-apache'
    ports:
      - "80:80"
    volumes:
      - "./:/var/www/"
    extra_hosts:
      - host.docker.internal:host-gateway

Sachez que pour l’installation de composer dans votre image c’est extrêmement simple il vous suffit, dans votre dockerfile, de copier le composer depuis une image déjà prête 😉

COPY --from=composer:latest /usr/bin/composer /usr/local/bin/composer

Alors maintenant comment disons nous à PhpStorm que nous souhaitons utiliser /usr/local/bin/composer de notre container ?

Allez dans File > Settings > PHP > Composer

image-53

A ce stade rien n’est fait. Vous allez donc cocher Synchronize ide Settings with composer.json et Remote Interpreter.

image-54

Sur les « … » depuis CLI Interpreter vous allez créer une nouvelle configuration.

image-55

Choisissez bien entendu From Docker.

image-56

Vous aurez plusieurs choix qui s’offrent à vous. Vous pourriez directement lier à une image docker spécifique. Perso je choisis mon docker-compose qui me permet de choisir le service que je souhaite utiliser. Mon docker-compose est extrêmement simple. Je n’ai qu’un service et tout ce dont j’ai besoin s’y trouve.

image-57

Concernant la configuration, je choisis personnellement d’utiliser la connexion au service existant vu que j’utilise le docker-compose. Si j’avais utilisé directement un container docker j’aurais utilisé l’option de « allways start a new container ». N’oubliez pas de cliquer sur le bouton de refresh au bout de General > PHP executable pour valider que tout est bien présent.

image-58

Vous aurez au final un petit bandeau en haut lorsque vous ouvrez votre fichier composer.json

image-59

Vous aurez accès aux options directement à install / update, show log vous permet de voir ce qu’il se passe réellement dans votre container. Au bout de vos commandes vous avez accès aux options qui vous permet de lancer plus de commandes.

image-60

Vous avez également la possibilité d’exécuter directement vos scripts depuis la flèche verte à gauche de votre code.

image-61

Maintenant que notre première étape est configurée, nous allons ajouter composer et la console de Symfony directement au système « Run Anything » de PhpStorm ; la fameuse fenêtre qui s’ouvre lorsque l’on clique 2 fois sur CTRL.

Ouvez la fenêtre de configuration File > Settings, rendez vous à la configuration de Tools > Command line Tool Support et cliquez sur le petit « + » afin d’ajouter une nouvelle configuration.

Une fenêtre de configuration devrait apparaître. Cliquez sur le petit « + » afin de créer une nouvelle configuration.

image-66

Vous aurez une petite fenêtre de configuration comme ceci avec plusieurs choix, entre autre composer et Symfony que nous allons tous deux configurer.

image-67

On commence par configurer composer :

image-68

Une fois enregistré vous devriez avoir un petit message vous indiquant que plusieurs commandes ont étés trouvées. C’est plutôt bon signe 🙂

image-69

Perso, j ai changé l’alias pour mettre composer, par défaut PhpStorm mettra « c ». On refait la manip mais cette fois avec Symfony.

image-70

Toujours pareil, choisissez votre interpréteur. Je choisis mon conteneur issue de mon docker-compose, et je choisis la version de Symfony souhaitée. Honnêtement si vous ne choisissez pas 3.* 4.* vous avez un sérieux problème 🙂 A noter que si vous avez du mal a monter en dernière version votre application Symfony, nous on sait faire et on se fera une joie de vous aider ^^

image-71
image-72

Là encore je change l’alias. Je préfère y mettre « console ». Question d’habitude 🙂

image-73

Ca y’est ! On est prêt pour tester l’ensemble. Pressez deux fois sur CTRL. La fenêtre de « Run anything » va s’ouvrir.

Tapez console et vous verrez apparaître toutes vos commandes Symfony. Et comme c’est magique elles vont s’exécuter directement dans votre conteneur.

image-74