web-dev-qa-db-fra.com

Exécuter PHPUnit dans un conteneur Docker avec PhpStorm

Je souhaite configurer mon PhpStorm IDE pour exécuter des tests PHPUnit dans mon conteneur Docker.

Il semble que je sois limité à l’utilisation d’un exécutable local PHP, ou d’un autre via SSH, comme interprète pour les tests.

Je pourrais installer un service SSH sur mon conteneur PHP, mais cela semble un peu une solution simpliste et les articles en ligne découragent l'installation d'un service SSH sur des conteneurs.

Pour essayer de faire fonctionner un interprète local, j'ai essayé de créer un script bash permettant d'appeler par proxy les appels vers PHP dans le conteneur, comme ceci:

#!/usr/bin/env bash

# Run PHP through Docker
docker exec -t mycontainer_php_1 php "$@"

Cela fonctionne parfaitement quand je le lance moi-même, mais quand je pointe PhpStorm comme interprète local PHP, il ne le reconnaît pas comme un exécutable PHP valide.

Alors, quel est un bon moyen de faire fonctionner cela?

31
Attila Szeremi

Cela marche:

DIR=$(dirname $(readlink -f "$0"))
docker run --rm --sig-proxy=true -v ${DIR}:${DIR} -w ${DIR} --pid=Host php:cli php "$@"

il suffit de le mettre dans un fichier, chmod + x it => vient d’être testé avec l’idée et est reconnu parfaitement bien :)

L'astuce pour que tous les scripts d'assistance phpstorms fonctionnent réellement est de monter le répertoire dans lequel se trouve l'exécutable php . Si ce script ne se trouve pas dans le dossier de votre exécutable phpunit et de son code source, vous devrez le développer montez ceux-ci.

(note latérale importante ici: ils doivent être montés dans le même dossier dans le conteneur et dans l'hôte obv :))

Editez après quelques mois maintenant, mais peut-être utile pour certains: Nous avons travaillé avec un exemple WordPress ici: http://original-brownbear.github.io/2015/12/23/phpunit- docker-phpstorm.html

9
Armin Braun

Je sais que vous dites que vous avez entendu dire que ssh dans les conteneurs Docker est mauvais, mais je pense que puisque PhpStorm ne supporte pas l’exécutif de Docker pour exécuter des scripts à distance, ce n’est pas une mauvaise option. Vous pouvez configurer un conteneur Docker en tant qu'interpréteur php distant à l'aide de SSH dans PhpStorm, puis simplement configurer une configuration PHPUnit distante.

Vous pouvez voir le guide étape par étape ici:
https://mickadoo.github.io/php,phpunit,docker/2016/10/12/phpunit-docker.html

Mise à jour: vous n'avez plus besoin d'utiliser SSH. PhpStorm supporte maintenant docker, vous pouvez exécuter des tests unitaires PHP en utilisant simplement une image de docker PHP avec PHPUnit installé en tant qu'interpréteur distant.

0
mickadoo