2017-07-25 11 views
0

Hintergrund

Eine php-Anwendung in einem Docker-Container ausgeführt. Mit docker-compose wird dieser Container in einer Konfiguration zusammen mit einem postgres-Datenbankcontainer und vielen anderen Containern ausgeführt.PHPUnit in einem Docker-Container ausführen und Container starten, hängt davon ab

Um meine phpunit Tests in phpstorm auszuführen, habe ich eine Docker Remote Interpreter test configuration erstellt, die den PHP-Anwendungscontainer ausführt.

Problem

Der Behälter beklagt, dass es nicht mit der Datenbank verbinden kann, was natürlich nicht gestartet wird, da es in den docker-compose.yml und nicht in Betrieb genommen zusammen mit dem einzelnen Behälter von PhpStorm verwendet konfiguriert ist.

Versuche

  • A PHP Remote Debug kann verwenden, um einen Einsatz, zu lösen, so habe ich versucht, ein Docker Deployment configuration zu schaffen, die die docker-compose.yml verwendet (beginnend daher alle Container) und ist launched before der PHPUnit Start, aber ich kann nicht wählen Diese Bereitstellung.
  • Starten des Docker Compose-Container außer dem aus der PHP-App und verbinden Sie es mit ihm. Dies erweist sich als schwierig, da sie sich in verschiedenen Netzwerken befinden, so beschwert sich der php app container immer noch darüber, die Datenbank nicht zu finden. Ich kann nicht das Netz konfigurieren, das der Behälter in PhpStorm verwendet.

tl; dr

Mein PhpStorm Projekt ist eine PHP-Anwendung. Diese Anwendung kann in einem Docker-Container ausgeführt werden, der über nginx bereitgestellt wird. Ich kann meine PHPUnit-Tests im Container mit einer Laufkonfiguration ausführen, benötigt aber auch andere Container, die nicht automatisch gestartet werden.

Frage

Wie kann ich PhpStorm verwenden, um PHPUnit Tests in einem PHP-Anwendung Containern zusammen mit den Behältern es hängt davon ab (bereits beschrieben in einem docker-compose.yml) zu laufen?

+0

Kannst du ein Skript erstellen, das statt deines Containers den Compose startet? ? Sie können Ihre Datenbank auch starten, wenn Sie mit der Arbeit beginnen, und Ihr Container kann darauf verlinken. –

+0

Schauen Sie sich das Skript [wait-for] (https://github.com/Eficode/wait-for/blob/master/wait-for) an, das auf einen bestimmten Container wartet, bevor ein anderer Container gestartet wird. – Ayushya

+0

@WassimDhif Ich habe ein solches Skript erstellt, aber ich bin mir nicht sicher, wie ich eine _PHPUnit_ run-Konfiguration in PhpStorm an den spezifischen Container anpassen soll, auf dem meine App läuft. –

Antwort

0

Die Antwort ist zu lang. Ich hoffe dieses 5 Minuten Video von Jetbrains TV hilft dir.

https://www.youtube.com/watch?v=I7aGWO6K3Ho

Kurz benötigen Sie:

  1. konfigurieren Docker Instanz in PhpStorm
  2. Konfigurieren neuer PHP-Interpreter von Docker Container
  3. konfigurieren PHPUnit Ihren neuen Interpreter zu benutzen
Verwandte Themen