Зачем заходить в докер контейнер, чтобы создать новый файл Laravel

Я использую Docker и Laravel, для того чтобы создать новый файл, я захожу в контейнер и прописываю допустим команду для создания контроллера. Но не особо понимаю почему бы это(прописать команду создания контроллера) не сделать сразу на локальной машине, так как через volume в любом случае они отобразятся и в контейнер, но советуют это делать именно заходя контейнера. На первом скрине выполняю эту команду внутри контейнера, на втором на локальной машине - эффект один и тот же, зачем тогда заходить в контейнер?

введите сюда описание изображения

введите сюда описание изображения

P.S Докер работает с правами USER 1000:1000

введите сюда описание изображения


Ответы (1 шт):

Автор решения: mydls1

что вы собственно делаете командой php artisan. В корневой директории проекта находится исполняющий файл artisan

#!/usr/bin/env php
<?php

use Symfony\Component\Console\Input\ArgvInput;

define('LARAVEL_START', microtime(true));

// Register the Composer autoloader...
require __DIR__.'/vendor/autoload.php';

// Bootstrap Laravel and handle the command...
$status = (require_once __DIR__.'/bootstrap/app.php')
    ->handleCommand(new ArgvInput);

exit($status);

Файл artisan начинается с shebang строки #!/usr/bin/env php, что указывает системе использовать PHP-интерпретатор для его запуска. Это позволяет вам выполнять команду просто как ./artisan, если у файла установлены права на исполнение.

  1. Подключение автозагрузчика Composer:
  2. Инициализация приложения Laravel
  3. Обработка консольной команды

он запускает php скрипт, поднимает bootstrap и принимает аргумент консольной команды.

Для того что бы запустить его нужен PHP, вы можете запустить его в любой среде где установлен php . В вашем случае вы заходите в Контейнер, где он установлен, но вы можете запускать его на вашей машине, если на ней установлен php (не входя в контейнер) , поскольку у вас в docker-compose прописан volumes c пробросом директории, то эти изменения так же будут в вашем контейнере

→ Ссылка