Почему развертывание в производство завершается неудачей с использованием Vapor — Невозможно загрузить динамическую библиотеку ‘imagick’

#laravel #aws-serverless #laravel-vapor

#laravel #aws-бессерверный #laravel-vapor

Вопрос:

У меня есть базовое приложение Laravel 7.x, которое я пытаюсь развернуть в рабочей среде с помощью Vapor. когда он достигает Running Deployment Hooks раздела развертывания, он завершается ошибкой со следующим сообщением.

 An error occurred during deployment.

Message: Deployment hook failed.

A deployment hook failed. You may review its logs using the hook:log command.
  

Я проверил журналы для получения более подробной информации, и это говорит о том, что есть проблема с imagick

Загруженный композитор автозагрузил filePreparing для добавления секретов в runtimePreparing для загрузки FPM, гарантируя готовность к запуску FPMStarting процесса FPM…[14 сентября 2020 00:57:50] УВЕДОМЛЕНИЕ: Сообщение PHP: Предупреждение PHP: Запуск PHP: не удается загрузить динамическую библиотеку ‘imagick’ (пробовал: /opt /bin /imagick (/opt /bin / imagick: не удается открыть общий объектный файл: нет такого файла или каталога), /opt /bin /imagick.so (libMagickWand.so.5: не удается открыть общий объектный файл: нет такого файла или каталога)) в неизвестном на строка 0

Ответ №1:

Начиная с сегодняшнего дня, вы можете добавить поддержку Imagick в свои проекты, импортировав внешний лямбда-слой. Это изменение уменьшает размер стандартного уровня среды выполнения Vapor и позволяет клиентам, которые не используют Imagick, загружать более крупные приложения, не беспокоясь об ограничениях размера приложений AWS Lambda.

Вы можете добавить это следующим образом в свой vapor.yml:

 environments:
    staging:
        layers:
          - vapor:php-7.4
          - vapor:php-7.4:imagick
  

Источник:https://blog .laravel.com/vapor-adding-imagick-as-a-separate-lambda-layer