Можете ли вы добавить инструменты CLI в приложение Cloud Foundry? - PullRequest
0 голосов
/ 21 марта 2019

Ужасно извините, если это очевидный вопрос.Но у меня есть веб-приложение, которое использует инструмент CLI, чтобы заставить его работать.Мне было интересно, есть ли способ указать это без использования собственного пакета сборки.И как это сделать, если это возможно

Любая помощь по этому вопросу будет здорово, спасибо

1 Ответ

0 голосов
/ 22 марта 2019

Можете ли вы добавить инструменты CLI в приложение Cloud Foundry?

Невозможно напрямую установить вещи с apt или apt-get.Ваше приложение запускается как непривилегированный пользователь и не может запустить эти инструменты для установки.

Это оставляет вам пару вариантов:

  1. Получить двоичный файл и связать егос вашим приложением.Некоторые люди (без моего суждения) скажут, что ваше приложение в любом случае отвечает за то, чтобы все, что ему нужно, запускалось, поэтому вы должны делать это уже.

    Двенадцатикратные приложения также не полагаютсяо неявном существовании любых системных инструментов.Примеры включают в себя обстрел ImageMagick или curl.[1]

    Этот путь хорошо работает для небольших или автономных зависимостей, таких как статически созданные приложения Go.Если вашему приложению для работы нужны совместно используемые библиотеки или другие ресурсы, вам необходимо также объединить их с вашим приложением.Также не здорово, если размер того, что вы связываете, большой.Все, что вы связываете, будет продвигаться вместе с приложением, поэтому оно может замедлить ваши толчки.Вы также несете ответственность за отслеживание обновлений и следите за тем, чтобы у вас были последние, исправленные и защищенные от ошибок бинарные файлы и библиотеки.

    Основные шаги для этого:

    1. Созданиепапка типа binaries/ в корневом каталоге вашего приложения с подпапками bin/ и lib/.
    2. Поместите все ваши двоичные файлы в binaries/bin и все необходимые им общие библиотеки в binaries/lib.
    3. Добавьте файл .profile в корень вашего приложения.Он будет получен до запуска вашего приложения, поэтому он будет помещать любые двоичные файлы, которые вы объединяете в путь, и добавлять библиотеки в путь поиска.

      В .profile введите следующее:

      export PATH=$HOME/binaries/bin:$PATH
      export LD_LIBRARY_PATH=$HOME/binaries/lib:$LD_LIBRARY_PATH
      

    Так и должно быть.Просто добавьте приложение со всеми новыми файлами.

  2. Еще один более простой вариант - использовать пакет сборки Apt [2].Этот buildpack-пакет может устанавливать необходимые зависимости, используя apt.Вам просто нужно добавить файл apt.yml в корневой каталог вашего приложения и запустить приложение с несколькими сборочными пакетами (сначала apt buildpack, затем ваш обычный buildpack).

    Основное преимущество этого состоит в том, что выне нужно управлять зависимостями.Пакет apt buildpack автоматически установит их из репозитория, который вы указали использовать, поэтому он также будет получать новые версии оттуда.Это хорошо, если то, что вам нужно установить, имеет много зависимостей, особенно чувствительных (например, openssl) или зависимостей, которые часто обновляются / исправляются как другие языковые среды выполнения (Python, Perl, Ruby и т. Д.).

    Другие преимущества.Это проще, потому что buildpack-пакет заботится о настройке PATH & LD_LIBRARY_PATH.Это также уменьшает размер приложения, что ускоряет загрузку.

    Недостатками этой опции является то, что apt-buildpack не является официальным buildpack-пакетом (поддерживается сообществом).Он также работает лучше всего, когда у вас есть доступ к Интернету, поэтому он может загружать двоичные файлы из Интернета, хотя вы можете обойти это, используя внутренний репозиторий.


Есть пара другихопции, но я бы не советовал их, если оба вышеуказанных варианта точно не будут работать для вас.

  1. Используйте Docker.Вы можете настроить свой собственный Docker-контейнер со всеми необходимыми зависимостями, а также с кодом приложения и cf push образа Docker для CF.Недостатком этого является то, что вы теряете преимущества использования buildpack-пакетов, поэтому вы вернулись к созданию и управлению образами Docker и всем необходимым зависимостям вашего приложения.

  2. Вы можете создать свой собственный сборочный пакет и предоставить зависимости таким образом.Хотя я не вижу причин, по которым вы хотели бы сделать это.Это приличная работа, и в итоге вы получите нечто более хрупкое и менее гибкое, чем Apt Buildpack.

  3. Технически возможно поставить свои собственные rootfs, но вы действительно не должны (я просто включаю это, чтобы быть тщательным).Это базовая файловая система, которая используется всеми приложениями на CF.Делать это имеет много недостатков, в основном из-за того, что это сложно.Он также применяется ко всем приложениям в фонде, может увеличивать размер rootfs и создает большую поверхность атаки для всего, что использует rootfs (то есть для всех приложений).

Надеюсь, что это поможет!

...