Как запустить команду SSH с помощью Laravel Envoy

Я хочу запустить команду SSH для запуска / остановки сервера с Laravel Envoy в Linux. Но я получаю сообщение об ошибке синтаксиса SSH :: into (). Не знаю, что делать, застрял. Нужен способ решить эту проблему и заставить это работать. Envoy настроен и отлично работает с командой "php artisan":

// Envoy.blade.php
@setup
     $connection = ['web' => $user.'@'.$host.' -p '. '22'];
@endsetup
@servers($connection)
@task('foo', ['on' => 'web'])
     php artisan
@endtask

Команда: посланник запускает foo --user = root --host = 94.130.97.242

И это то, что я делаю для SSH :: into () для запуска / остановки сервера.

// Envoy.blade.php
@include('vendor/autoload.php')
     $connection = ['web' => $user.'@'.$host.' -p '. '22'];
     $target = [
          'host' => $host,
          'username' => $user,
          'password' => $password,
          'timeout' => 10,
     ];

     Config::set('remote.connections.runtime.host', $target['host']);
     Config::set('remote.connections.runtime.port', '22');
     Config::set('remote.connections.runtime.username', $target['username']);
     Config::set('remote.connections.runtime.password', $target['password']);

@endsetup
@servers($connection)
@task('foo', ['on' => 'web'])
     SSH::into('runtime')->run(array(
          'docker stop ' . $server
     ));
@endtask

Команда: посланник run foo --user = root --host = 94.130.97.242 --password = password --server = 22 После запуска выдает ошибку синтаксической ошибки неожиданный токен'runtime '. Мне нужна ваша помощь. Спасибо!


person Sohail Khan    schedule 10.04.2020    source источник
comment
Вы действительно хотите использовать Envoy? Потому что вы могли добиться этого без Envoy благодаря Docker   -  person Shizzen83    schedule 10.04.2020
comment
@ Shizzen83, вы правы, я использую его, но я хочу запустить команду docker для развертывания сервера, это занимает много времени, поэтому я хочу, чтобы они запускались на бэкэнде   -  person Sohail Khan    schedule 11.04.2020
comment
Вы можете использовать процесс Symfony, чтобы обернуть вашу команду Docker и запустить ее асинхронно.   -  person Shizzen83    schedule 11.04.2020
comment
@ Shizzen83 любой источник или ссылка, относящаяся к моей проблеме, я устал искать способы решения   -  person Sohail Khan    schedule 11.04.2020


Ответы (1)


Вот способ с процессом Symfony (изначально доступный в Laravel)

use Symfony\Component\Process\Process;

function start(string $user, string $host)
{
    $sshSetting = sprintf('ssh://%s@%s', $user, $host);

    $process = new Process([
        'docker', '-H', $sshSetting, 'start'
    ]);

    $process->run(); //synchronous
    $process->mustRun(); //synchronous, throw an exception whenever fail
    $process->start(); //asynchronous
}

Вот официальная документация https://symfony.com/doc/current/components/process.html#running-processes-asynchronously

person Shizzen83    schedule 11.04.2020
comment
Спасибо, мой друг! - person Sohail Khan; 11.04.2020