• Czas czytania ~6 min
  • 20.10.2023

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 .bashrcdodaj 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.

Add new interpreter

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.

Add new interpreter

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.

Select service from Docker Compose file

Teraz nowy interpreter PHP powinien być ustawiony jako domyślny dla projektu.

New interpreter set

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ąć:

  1. Przejdź do Ustawień > PHP > Narzędzia jakości.

  2. Rozwiń sekcję Laravel Pint i włącz kufel.

  3. Ustawiamy konfigurację na interpreter wskazujący na kontener Dockera, w moim przypadku jest laravel.testto .

  4. Kliknij trzy kropki..., aby skonfigurować Pint dla tłumacza.

Set up Laravel Pint

Po kliknięciu trzech kropek ...otworzy się nowe okno, w którym możesz dodać nową konfigurację kufla.

Create a new Laravel Pint configuration

  1. Kliknij ikonę + plusa w lewym górnym rogu.

  2. 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.

  1. W polu "Laravel Pint path" dodaj vendor/bin/pint do wskazywania pliku binarnego Pint w katalogu dostawcy Composer Przejdź do Ustawienia > PHP > Composer.

  2. Kliknij przycisk "Zatwierdź".

  3. Jeśli wszystko się zgadza, wersja Pint powinna być pokazana na dole.

Set Laravel Pint path

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".

Set Pint as the external formatter

Teraz kod można przeformatować za pomocą Laravel Pint z kontenera Docker.

Reformat code with Docker Laravel Pint

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".

Reformat code on save

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".

Create a new Node interpreter

W nowym oknie kliknij przycisk plusa + w lewym górnym rogu. Następnie wybierz "Dodaj pilota...".

Add remote Node interpreter

Tak jak poprzednio w przypadku PHP, wybierz opcję "Docker Compose" i wybierz usługęlaravel.test.

Configure the Node.js Remote Interpreter

Node is now pointing at the version in the Docker container. To continue with Ładniejszy, go to Settings > Languages & Frameworks > JavaScript > Ładniejszy.

Set Ładniejszy configuration

In the Ładniejszy settings:

  1. Select "Automatic Ładniejszy configuration".

  2. 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ą.

Create a remote test framework

laravel.test Wybierz interpreter z nowego okna:

PHPUnit remote interpreter

Teraz dostępny jest nowy PHPUnit Test Framework.

Remote PHPUnit test framework

Następnie zmodyfikuj konfiguracje uruchamiania, przechodząc do menu Uruchom i wybierając "Edytuj konfiguracje...".

Edit run configurations

W nowym oknie kliknij ikonę koła zębatego obok pola "Użyj alternatywnego pliku konfiguracyjnego".

Set PHPUnit test framework configuration

Spowoduje to otwarcie nowego okna, w którym można wybrać nową zdalną konfigurację PHPUnit.

Set remote interpreter for tests

Na koniec upewnij się, że konfiguracja wskazuje laravel.test na interpreter lub interpreter domyślny, jeśli jest ustawiony jako laravel.test.

Set remote interpreter for tests

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:

  1. Wybierz radio dla "Remote Interpreter".

  2. Wybierz laravel.test jako "Interpreter CLI".

Run Composer Przejdź do Ustawienia > PHP > Composer from Remote Interpreter

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.

Composer Przejdź do Ustawienia > PHP > Composer commands in PhpStorm

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.

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...".

Edit npm W przypadku npm configurations

Po otwarciu nowego okna:

  1. Ustaw "Interpreter węzłów" na interpreter Docker composelaravel.test, jeśli nie jest jeszcze ustawiony.

  2. Add a new environment variable: WWWUSER=sail. This prevents PhpStorm from trying to run the npm W przypadku npm commands as the npm W przypadku npm user.

npm W przypadku npm run configuration

Now, the dev script can be run from the npm W przypadku npm tool window and the output is shown in PhpStorm.

npm W przypadku npm script running 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.

Comments

No comments yet
Yurij Finiv

Yurij Finiv

Full stack

O

Professional Fullstack Developer with extensive experience in website and desktop application development. Proficient in a wide range of tools and technologies, including Bootstrap, Tailwind, HTML5, CSS3, PUG, JavaScript, Alpine.js, jQuery, PHP, MODX, and Node.js. Skilled in website development using Symfony, MODX, and Laravel. Experience: Contributed to the development and translation of MODX3 i...

O autorze CrazyBoy49z
WORK EXPERIENCE
Kontakt
Ukraine, Lutsk
+380979856297