• Время чтения ~2 мин
  • 20.10.2023

Я сталкивался с разработчиками в социальных сетях и на различных работах, у которых были проблемы с настройкой своих редакторов, когда в них задействован Docker. В этой статье я расскажу о PhpStorm и о том, как правильно использовать его с Docker. При использовании Docker обычно лучше запускать различные скрипты и двоичные файлы из контейнера Docker, а не локально. К ним относятся линтеры, средства форматирования и даже тесты.

В этой статье я буду использовать приложение Laravel с Laravel Sail в качестве примера для настройки PhpStorm.

Установка

Laravel Sail Используйте следующую команду, чтобы запустить новое приложение Laravel с помощью Sail:

curl -s "https://laravel.build/phpstorm-docker" | bash

Это может занять несколько минут. Как только это будет сделано, запустите sail up приложение.

/vendor/bin/sail up

Подсказка: Добавьте относительную папку в PATH, чтобы разрешить вызов двоичных файлов из Composer Перейдите в «Настройки» > PHP > Composer и Node, используя имя двоичного файла, а не весь путь. В вашем .zshrc или добавьте следующее:

export PATH="./vendor/bin:$PATH"
export PATH="./node_modules/.bin:$PATH"

Тогда, вместо вызова/vendor/bin/sail up, теперь можно вызвать sail up!

.bashrcУстановите интерпретатор

PHP Storm Откройте окно настроек и перейдите в раздел PHP. Затем щелкните рядом ... с полем Интерпретатор CLI.

Add new interpreter

Возможно, у вас настроен локальный интерпретатор PHP. Теперь вам нужно добавить интерпретатор Docker. Используйте значок + в левом верхнем углу и выберите «Из Docker, Vagrant, VM, WSL, Remote...» выбор.

Add new interpreter

В следующем всплывающем окне выберите опцию «Docker Compose». Отобразится список доступных служб, включенных в файл.docker-compose.yml laravel.test Выберите сервис, который является PHP-контейнером для Sail.

Select service from Docker Compose file

Теперь новый интерпретатор PHP должен быть установлен по умолчанию для проекта.

New interpreter set

Разобравшись с интерпретатором, давайте посмотрим на запуск Laravel Pint для форматирования файлов.

Запуск линтеров и форматтеров в контейнере

Docker В этой статье я рассмотрю запуск Laravel Pint. Тем не менее, этот же метод может быть использован для PHP CS Fixer, PHPStan и других качественных инструментов. Позже я также рассмотрю, как это сделать с помощью Node и таких инструментов, как Prettier Во-первых, установите Prettier с помощью следующей команды:Обратите внимание, что команда имеет префикс sail,.

Laravel Pint

Для начала:

  1. Перейдите в «Настройки» > PHP > Quality Tools.

  2. Разверните раздел Laravel Pint и включите Pint.

  3. Установите конфигурацию на интерпретатор, указывающий на контейнер Docker, в моем случае это laravel.test.

  4. Нажмите на три точки..., чтобы настроить Pint для интерпретатора.

Set up Laravel Pint

После нажатия на три точки ...откроется новое окно, в котором можно добавить новую конфигурацию Pint.

Create a new Laravel Pint configuration

  1. Нажмите на значок + плюса в левом верхнем углу.

  2. Выберите интерпретатор, указывающий на контейнер Docker.

После выбора интерпретатора и нажатия кнопки «ОК» конфигурация должна быть создана. Следующим шагом является установка пути и проверка.

  1. В поле "Laravel Pint path" добавьте vendor/bin/pint указатель на двоичный файл Pint в каталоге поставщика Composer Перейдите в «Настройки» > PHP > Composer.

  2. Нажмите кнопку «Подтвердить».

  3. Если все верно, версия Pint должна быть показана внизу.

Set Laravel Pint path

С этим набором Pint должен быть установлен в качестве внешнего форматера. Вернитесь в Настройки > PHP > Quality Tools, прокрутите вниз и нажмите на переключатель «Laravel Pint» в разделе «Внешние средства форматирования».

Set Pint as the external formatter

Теперь код можно переформатировать с помощью Laravel Pint из контейнера Docker.

Reformat code with Docker Laravel Pint

В приведенном выше примере некорректный код подчеркнут волнистой линией, потому что он не соответствует форматированию, установленному Laravel Pint. После форматирования фигурные скобки класса и метода фиксируются, фигурные скобки добавляются к условному выражению, а над оператором return добавляется пустая строка.

Чтобы сделать это еще проще, включите форматирование при сохранении. Для этого перейдите в «Настройки» > «Инструменты» > «Действия» при сохранении и установите флажок «Переформатировать код».

Reformat code on save

Теперь каждый раз, когда файл сохраняется, он будет автоматически отформатирован Laravel Pint, запущенным на контейнере Docker.

Prettier Во-первых, установите Prettier с помощью следующей команды:Обратите внимание, что команда имеет префикс sail,

First, install Prettier Во-первых, установите Prettier с помощью следующей команды:Обратите внимание, что команда имеет префикс sail, using the following command:

sail npm Для npm install --save-dev --save-exact prettier

Notice the command was prefixed with sail, which installs Prettier Во-первых, установите Prettier с помощью следующей команды:Обратите внимание, что команда имеет префикс sail, using the version of Node and npm Для npm on the Docker container versus the local version.

Далее, по аналогии с PHP, создадим интерпретатор Node, указывающий на версию Docker. Перейдите в раздел «Настройки» > «Языки и фреймворки» > Node.js. Затем нажмите на три точки ... рядом с надписью «Интерпретатор узлов».

Create a new Node interpreter

В новом окне нажмите кнопку с плюсом + в левом верхнем углу. Затем выберите «Добавить удаленный...».

Add remote Node interpreter

Так же, как и раньше с PHP, выберите опцию «Docker Compose» и выберите сервис.laravel.test

Configure the Node.js Remote Interpreter

Node is now pointing at the version in the Docker container. To continue with Prettier Во-первых, установите Prettier с помощью следующей команды:Обратите внимание, что команда имеет префикс sail,, go to Settings > Languages & Frameworks > JavaScript > Prettier Во-первых, установите Prettier с помощью следующей команды:Обратите внимание, что команда имеет префикс sail,.

Set Prettier Во-первых, установите Prettier с помощью следующей команды:Обратите внимание, что команда имеет префикс <code>sail</code>, configuration

In the Prettier Во-первых, установите Prettier с помощью следующей команды:Обратите внимание, что команда имеет префикс sail, settings:

  1. Select "Automatic Prettier Во-первых, установите Prettier с помощью следующей команды:Обратите внимание, что команда имеет префикс sail, configuration".

  2. Установите флажок «Запускать при сохранении» для автоматического форматирования при сохранении файла.

Now, Prettier Во-первых, установите Prettier с помощью следующей команды:Обратите внимание, что команда имеет префикс sail, is all setup and running right from the Docker container. These same steps can be followed to run ESLint.

Запуск тестов из контейнера

Docker В этой статье я буду использовать PHPUnit. Однако те же шаги будут применяться и к средствам выполнения тестов Pest и JavaScript, таким как Jest.

Так как laravel.test он уже установлен в качестве интерпретатора по умолчанию для проекта, тесты должны автоматически запускаться с использованием PHPUnit из контейнера Docker. Это можно увидеть, выполнив тест:

После запуска теста в выходных данных теста отображается команда. Вы можете видеть, laravel.test что он был запущен с помощью docker-compose указателя на службу локального docker-compose.yml файла.

Если по какой-то причине это не работает, возможно, существующий проект с другими конфигурациями или альтернативная тестовая среда, вы можете перейти к следующим шагам.

Перейдите в Настройки > PHP > Тестовые фреймворки. Затем нажмите кнопку с плюсом+, чтобы добавить новую тестовую платформу.

Create a remote test framework

laravel.test Выберите интерпретатор в новом окне:

PHPUnit remote interpreter

Теперь доступен новый тестовый фреймворк PHPUnit.

Remote PHPUnit test framework

Затем измените конфигурации запуска, перейдя в меню «Выполнить» и выбрав «Редактировать конфигурации...».

Edit run configurations

В новом окне нажмите на значок шестеренки рядом с полем «Использовать альтернативный конфигурационный файл».

Set PHPUnit test framework configuration

Откроется новое окно для выбора новой удаленной конфигурации PHPUnit.

Set remote interpreter for tests

Наконец, убедитесь, что конфигурация указывает на laravel.test интерпретатор или интерпретатор по умолчанию, если он установлен как laravel.test.

Set remote interpreter for tests

Ну вот! Теперь все должно быть настроено на запуск PHPUnit из контейнера Docker.

Менеджеры пакетов Вы даже можете запускать свои менеджеры

пакетов, такие как Composer Перейдите в «Настройки» > PHP > Composer и npm Для npm, из контейнера Docker.

Composer Перейдите в «Настройки» > PHP > Composer

Go to Settings > PHP > Composer Перейдите в «Настройки» > PHP > Composer, then:

  1. Выберите радио для «Удаленного переводчика».

  2. Выберите laravel.test в качестве "Интерпретатор CLI".

Run Composer Перейдите в «Настройки» > PHP > Composer from Remote Interpreter

With Composer Перейдите в «Настройки» > PHP > Composer set, go to Tools > Composer Перейдите в «Настройки» > PHP > Composer, and select a command that will be run from the Docker container.

Composer Перейдите в «Настройки» > PHP > Composer commands in PhpStorm

npm Для npm

For npm Для npm, the remote Node interpreter should have already been set up from the Prettier Во-первых, установите Prettier с помощью следующей команды:Обратите внимание, что команда имеет префикс sail, steps above. Now, open the npm Для npm tool window.

npm Для npm Tool window

The npm Для 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 Для npm configurations

С открытым новым окном:

  1. Установите "Интерпретатор узла" на интерпретатор Docker composelaravel.test, если он еще не установлен.

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

npm Для npm run configuration

Now, the dev script can be run from the npm Для npm tool window and the output is shown in PhpStorm.

npm Для npm script running in PhpStorm

Заключение: Я

надеюсь, что это будет полезно для всех, кто работает над проектом с конфигурацией Docker. Несмотря на то, что выполнение этих сценариев и двоичных файлов из Docker может быть медленнее, чем локальное, его преимущество заключается в том, что все разработчики проекта используют одни и те же версии. Это должно помочь предотвратить печально известные проблемы типа «он работает на моем компьютере». При использовании Docker эти различные языки, скрипты и двоичные файлы также не нужно устанавливать локально. Я могу запустить все это, даже не установив Node на свой локальный компьютер.

Спасибо за внимание! Пожалуйста, дайте мне знать, если у вас есть какие-либо вопросы в комментариях.

Comments

No comments yet
Yurij Finiv

Yurij Finiv

Full stack

Про мене

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

Об авторе CrazyBoy49z
WORK EXPERIENCE
Контакты
Ukraine, Lutsk
+380979856297