Я создал этот класс задания:
Код: Выделить всё
public function handle()
{
$process = new Process([
'docker',
'run',
'my/container:4.5.0',
$this->url
]);
$process->setTimeout(3600);
$process->setIdleTimeout(3600);
$process->run();
Result::create([
'result' => json_decode(strstr($process->getOutput(), '{'))
]);
}
Если я запущу его непосредственно из консоли выполните следующую команду:
Код: Выделить всё
$url = $this->argument('url');
$this->line("Starting test for $url");
// $result = ProcessJob::dispatch($url);
$process = new Process([
'docker',
'run',
'my/container:4.5.0',
$url
]);
$process->setTimeout(3600);
$process->run();
Result::create([
'result' => json_decode(strstr($process->getOutput(), '{')),
]);
return 0;
Теперь все становится еще сложнее:
Это прекрасно работает на моя машина Homestead, но не на моем виртуальном сервере, который я разместил в центре обработки данных.
Что я сделал:
- Я проверено, может ли команда docker выполняться для этого пользователя (правда, иначе консольная команда завершится неудачно.
- Я проверил журнал Laravel (нет записи)
- Я проверил журнал MySQL (нет записей)
Подробнее здесь: https://stackoverflow.com/questions/637 ... d-in-a-job
Мобильная версия