Приложение Cloud Foundry, созданное с помощью PHP buildpack - пользовательские расширения исчезают после развертывания

У меня есть PHP-приложение CIO Blumix Cloud Foundry, которое требует дополнительных компонентов.

Я использовал https://github.com/cloudfoundry/php-buildpack для сборки. Я прочитал в его документации, что я могу добавить свое собственное расширение. Я сделал это и добавил tar.tgz и добавил инструкции в extention.py, как его установить.

Целевое местоположение: /home/vcap/. Я вижу, что установка работает нормально, и вижу папку на этапе развертывания (в журнале и истории этапа развертывания DevOps Pipelines).

Но когда развертывание проходит, и я читаю с развернутой страницей php папку, я вижу, что ее там нет. Я прочитал сообщение "контейнер успешно уничтожен" в журнале развертывания. Может быть, вся среда установки разрушена? Где находится безопасное место в файловой структуре развертывания, где я могу установить компоненты, чтобы они оставались после завершения развертывания?

Я использую def compile(install): разместить мои команды Unix. Пример: os.system('ls') перечислить содержимое установочных папок. Они работают правильно.

Спасибо заранее!

1 ответ

Решение

В вашем приложении используются две совершенно разные среды: подготовка и выполнение. Staging - это то, где запускается buildpack, а время выполнения - то, где запускается продукт staging (т.е. ваше приложение).

К сожалению, пути не совпадают в стадии и времени выполнения. Во время выполнения ваше приложение живет под /app или же /home/vcap/app (первое является символической ссылкой на второе). Постановка другая. E сть /home/vcap каталог, но он не используется ни для чего.

Вместо этого сценарии buildpack передают пути для использования через аргументы cli. Это все задокументировано здесь.

Как расширение PHP buildpack, вы можете получить доступ к параметрам и многим другим, просматривая контекст, поддерживаемый buildpack. Это передается непосредственно в методы расширения buildpack, такие как service_environment & service_commands, compile Метод расширения buildpack немного отличается, так как передаваемый аргумент не является содержимым, но этот аргумент имеет ссылку на контекст (это install.builder._ctx).

Сказав все это, я бы не рекомендовал использовать расширения PHP buildpack на этом этапе. Buildpack переписывается, и эта функциональность удаляется. Это не будет иметь прямую замену, но самая близкая вещь была бы способностью Композитора выполнить сценарии. Мое предложение будет посмотреть, если вы можете использовать функциональность Composer. Он будет более переносимым, так как не будет зависеть от конкретного поведения buildpack.

Другие вопросы по тегам