Natknąłem się na programistów w mediach społecznościowych i w różnych miejscach pracy, którzy mieli problemy z konfiguracją swoich edytorów, gdy zaangażowany jest Docker. W tym artykule omówię PhpStorm i jak prawidłowo z niego korzystać z Dockera. W przypadku korzystania z platformy Docker zwykle najlepiej jest uruchamiać różne skrypty i pliki binarne z kontenera platformy Docker zamiast uruchamiać lokalnie. Obejmuje to lintery, formatery, a nawet testy.
W tym artykule posłużę się aplikacją Laravel z Laravel Sail jako przykładem konfiguracji PhpStorm.
Instalacja
żagla Laravel Użyj następującego polecenia, aby uruchomić nową aplikację Laravel za pomocą Sail:
curl -s "https://laravel.build/phpstorm-docker" | bash
Może to potrwać kilka minut. Po zakończeniu uruchomsail up
, aby uruchomić aplikację.
/vendor/bin/sail up
Szybka wskazówka: Dodaj folder względny do PATH, aby umożliwić wywoływanie plików binarnych z aplikacji Composer Przejdź do Ustawienia > PHP > Composer i Node przy użyciu nazwy pliku binarnego zamiast całej ścieżki. W polu
.zshrc
lub.bashrc
dodaj następujące polecenie:export PATH="./vendor/bin:$PATH" export PATH="./node_modules/.bin:$PATH"
Następnie, zamiast dzwonić
/vendor/bin/sail up
, można teraz zadzwonićsail up
!
Ustaw interpreter
PHP PhpStorm Otwórz okno ustawień i przejdź do sekcji PHP. W tym miejscu kliknij ...
obok pola Interpreter interfejsu wiersza polecenia.
Być może masz skonfigurowany lokalny interpreter PHP. Teraz będziesz chciał dodać interpreter platformy Docker. Użyj w +
lewym górnym rogu i wybierz opcję "Z Docker, Vagrant, VM, WSL, Remote..." opcja.
W następnym wyskakującym okienku wybierz opcję "Docker Compose". Spowoduje to wyświetlenie listy dostępnych usług zawartych w docker-compose.yml
pliku. Wybierz usługęlaravel.test
, która jest kontenerem PHP dla Sail.
Teraz nowy interpreter PHP powinien być ustawiony jako domyślny dla projektu.
Po skonfigurowaniu interpretera przyjrzyjmy się uruchamianiu Laravel Pint w celu sformatowania plików.
Uruchamianie Linterów i Formerów w kontenerze Dockera W
tym artykule przyjrzę się uruchamianiu Laravel Pint. Jednak ta sama metoda może być używana do PHP CS Fixer, PHPStan i innych narzędzi jakościowych. Później omówię również, jak to zrobić za pomocą Node i narzędzi takich jak Ładniejszy.
Laravel Pint
Rozpocząć:
-
Przejdź do Ustawień > PHP > Narzędzia jakości.
-
Rozwiń sekcję Laravel Pint i włącz kufel.
-
Ustawiamy konfigurację na interpreter wskazujący na kontener Dockera, w moim przypadku jest
laravel.test
to . -
Kliknij trzy kropki
...
, aby skonfigurować Pint dla tłumacza.
Po kliknięciu trzech kropek ...
otworzy się nowe okno, w którym możesz dodać nową konfigurację kufla.
-
Kliknij ikonę
+
plusa w lewym górnym rogu. -
Wybierz interpreter wskazujący kontener platformy Docker.
Po wybraniu interpretera i wciśnięciu przycisku "OK" należy utworzyć konfigurację. Następnym krokiem jest ustawienie ścieżki i walidacja.
-
W polu "Laravel Pint path" dodaj
vendor/bin/pint
do wskazywania pliku binarnego Pint w katalogu dostawcy Composer Przejdź do Ustawienia > PHP > Composer. -
Kliknij przycisk "Zatwierdź".
-
Jeśli wszystko się zgadza, wersja Pint powinna być pokazana na dole.
W tym zestawie Pint musi być ustawiony jako zewnętrzny formater. Wróć do Ustawień > PHP > Quality Tools, przewiń w dół i kliknij radio "Laravel Pint" w sekcji "Zewnętrzne formatery".
Teraz kod można przeformatować za pomocą Laravel Pint z kontenera Docker.
W powyższym przykładzie nieprawidłowy kod jest podkreślony linią falistą, ponieważ nie jest zgodny z formatowaniem ustawionym przez Laravela Pinta. Po sformatowaniu nawiasy klamrowe klasy i metody są stałe, nawiasy klamrowe są dodawane do warunku, a nad instrukcją return dodawany jest pusty wiersz.
Aby to jeszcze bardziej ułatwić, włącz formatowanie podczas zapisywania. Aby to osiągnąć, przejdź do Ustawień > Narzędzia > Akcje przy zapisywaniu i zaznacz pole "Sformatuj kod".
Teraz za każdym razem, gdy plik zostanie zapisany, zostanie automatycznie sformatowany przez Laravel Pint, uruchomiony w kontenerze Docker.
Ładniejszy
First, install Ładniejszy using the following command:
sail npm W przypadku npm install --save-dev --save-exact prettier
Notice the command was prefixed with sail
, which installs Ładniejszy using the version of Node and npm W przypadku npm on the Docker container versus the local version.
Następnie, podobnie jak w PHP, utwórz interpreter Node, który wskazuje na wersję Dockera. Przejdź do Ustawienia > Języki i struktury > Node.js. Stamtąd kliknij trzy kropki ...
obok "Interpreter węzłów".
W nowym oknie kliknij przycisk plusa +
w lewym górnym rogu. Następnie wybierz "Dodaj pilota...".
Tak jak poprzednio w przypadku PHP, wybierz opcję "Docker Compose" i wybierz usługęlaravel.test
.
Node is now pointing at the version in the Docker container. To continue with Ładniejszy, go to Settings > Languages & Frameworks > JavaScript > Ładniejszy.
In the Ładniejszy settings:
-
Select "Automatic Ładniejszy configuration".
-
Zaznacz opcję "Uruchom przy zapisywaniu", aby uzyskać automatyczne formatowanie podczas zapisywania pliku.
Now, Ładniejszy is all setup and running right from the Docker container. These same steps can be followed to run ESLint.
Uruchamianie testów z kontenera Dockera W
tym artykule będę używał PHPUnit. Jednak te same kroki będą miały również zastosowanie do modułów uruchamiających testy Pest i JavaScript, takich jak Jest.
Ponieważ laravel.test
jest już ustawiony jako domyślny interpreter dla projektu, testy powinny być automatycznie uruchamiane przy użyciu PHPUnit z kontenera Docker. Można to zobaczyć, uruchamiając test:
Po uruchomieniu testu dane wyjściowe testu pokazują polecenie. Widać, że został uruchomiony za pomocą docker-compose
wskazywania laravel.test
na usługę pliku lokalnegodocker-compose.yml
.
Jeśli z jakiegoś powodu to nie działa, być może istniejący projekt z innymi konfiguracjami lub alternatywną strukturą testową, możesz przejść do kolejnych kroków.
Przejdź do Ustawień > PHP > Test Frameworks. Następnie kliknij przycisk plusa+
, aby dodać nową platformę testową.
laravel.test
Wybierz interpreter z nowego okna:
Teraz dostępny jest nowy PHPUnit Test Framework.
Następnie zmodyfikuj konfiguracje uruchamiania, przechodząc do menu Uruchom i wybierając "Edytuj konfiguracje...".
W nowym oknie kliknij ikonę koła zębatego obok pola "Użyj alternatywnego pliku konfiguracyjnego".
Spowoduje to otwarcie nowego okna, w którym można wybrać nową zdalną konfigurację PHPUnit.
Na koniec upewnij się, że konfiguracja wskazuje laravel.test
na interpreter lub interpreter domyślny, jeśli jest ustawiony jako laravel.test
.
Otóż to! Wszystko powinno być teraz skonfigurowane do uruchamiania PHPUnit z kontenera Docker.
Menedżerowie pakietów
Możesz nawet uruchamiać menedżery pakietów, takie jak Composer Przejdź do Ustawienia > PHP > Composer i npm W przypadku npm, z kontenera Docker.
Composer Przejdź do Ustawienia > PHP > Composer
Go to Settings > PHP > Composer Przejdź do Ustawienia > PHP > Composer, then:
-
Wybierz radio dla "Remote Interpreter".
-
Wybierz
laravel.test
jako "Interpreter CLI".
With Composer Przejdź do Ustawienia > PHP > Composer set, go to Tools > Composer Przejdź do Ustawienia > PHP > Composer, and select a command that will be run from the Docker container.
npm W przypadku npm
For npm W przypadku npm, the remote Node interpreter should have already been set up from the Ładniejszy steps above. Now, open the npm W przypadku npm tool window.
The npm W przypadku npm tool window will show all the scripts configured in the package.json
file. Right-click on the dev
script and click "Edit 'dev' Settings...".
Po otwarciu nowego okna:
-
Ustaw "Interpreter węzłów" na interpreter Docker compose
laravel.test
, jeśli nie jest jeszcze ustawiony. -
Add a new environment variable:
WWWUSER=sail
. This prevents PhpStorm from trying to run the npm W przypadku npm commands as thenpm W przypadku npm
user.
Now, the dev
script can be run from the npm W przypadku npm tool window and the output is shown in PhpStorm.
Wnioski
Mam nadzieję, że jest to pomocne dla każdego, kto pracuje nad projektem z konfiguracją Dockera. Chociaż uruchamianie tych skryptów i plików binarnych z platformy Docker może być wolniejsze niż uruchamianie lokalne, ma tę zaletę, że wszyscy programiści w projekcie korzystają z tych samych wersji. Powinno to pomóc w zapobieganiu niesławnym problemom typu "działa na moim komputerze". Korzystając z platformy Docker, te różne języki, skrypty i pliki binarne również nie muszą być instalowane lokalnie. Mogę to wszystko uruchomić, nawet bez instalowania Node na moim komputerze lokalnym.
Dziękuję za przeczytanie! Daj mi znać, jeśli masz jakieś pytania w komentarzach.