• Час читання ~6 хв
  • 20.10.2023

Я стикався з розробниками в соціальних мережах і на різних роботах, які мали проблеми з налаштуванням своїх редакторів, коли задіяний Docker. У цій статті я розповім про PhpStorm і про те, як його правильно використовувати з Docker. При використанні Docker зазвичай краще запускати різні скрипти та двійкові файли з контейнера Docker, а не запускати локально. Сюди входять лінтери, форматери і навіть тести.

У цій статті я буду використовувати додаток Laravel з Laravel Sail як приклад для налаштування PhpStorm.

Встановлення

вітрил Laravel Використовуйте наступну команду, щоб розкрутити нову програму Laravel за допомогою Sail:

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

Це може зайняти кілька хвилин. Як тільки це буде зроблено, біжіть sail up , щоб запустити програму.

/vendor/bin/sail up

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

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

Тоді, замість виклику /vendor/bin/sail up, тепер можна викликати sail up!

Встановіть інтерпретатор PHP PhpStorm

Відкрийте вікно налаштувань і перейдіть до розділу PHP. Звідти натисніть поруч ... із полем CLI Interpreter.

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 та таких інструментів, як Преттьє.

Laravel Pint

Для початку:

  1. Перейдіть до налаштувань > PHP > Інструменти якості.

  2. Розгорніть розділ Laravel Pint і ввімкніть пінту.

  3. Встановіть конфігурацію на інтерпретатор, що вказує на контейнер Docker, у моєму випадку це laravel.test.

  4. Натисніть три крапки ... , щоб налаштувати пінту для перекладача.

Set up Laravel 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.

Преттьє

First, install Преттьє using the following command:

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

Notice the command was prefixed with sail, which installs Преттьє using the version of Node and npm Для npm on the Docker container versus the local version.

Далі, аналогічно PHP, створіть інтерпретатор Node, який вказує на версію Docker. Перейдіть до Settings > Languages & Frameworks > 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 Преттьє, go to Settings > Languages & Frameworks > JavaScript > Преттьє.

Set Преттьє configuration

In the Преттьє settings:

  1. Select "Automatic Преттьє configuration".

  2. Поставте галочку навпроти пункту "Запускати при збереженні" для автоматичного форматування при збереженні файлу.

Now, Преттьє is all setup and running right from the Docker container. These same steps can be followed to run ESLint.

Запуск тестів з Docker Container

Для цієї статті я буду використовувати PHPUnit. Однак ті ж кроки будуть застосовуватися і до запускачів тестів Pest і JavaScript, таких як Jest.

Оскільки laravel.test вже встановлено інтерпретатор за замовчуванням для проекту, тести повинні автоматично запускатися за допомогою PHPUnit з контейнера Docker. Це можна побачити, запустивши тест:

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

Якщо з якихось причин це не працює, можливо, існуючий проект з іншими конфігураціями або альтернативний тестовий фреймворк, ви можете перейти до наступних кроків.

Зайдіть в Налаштування > PHP > Test Frameworks. Потім натисніть кнопку з плюсом + , щоб додати новий тестовий фреймворк.

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 Преттьє 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. Встановіть "Інтерпретатор вузлів" на інтерпретатор компонування laravel.test Docker, якщо він ще не встановлений.

  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