Создание Custom Buildpack с бинарным компоновщиком - PullRequest
1 голос
/ 19 июня 2019

В настоящее время я пытаюсь подключить приложение PHP в Cloud Foundry к базе данных Oracle. Для этого мне нужно собрать двоичные файлы для php с драйвером oci8, чтобы использовать pdo_oci в моем приложении. Для этого я использую

https://github.com/cloudfoundry/binary-builder

с докером. Кажется, это работает нормально. Однако после этого я не знаю, как двигаться дальше.

Я читал Документы Cloud Foundry о пользовательских Buildpacks (https://docs.cloudfoundry.org/buildpacks/custom.html). Там они описывают создание пользовательских Buildpacks в три этапа:

  1. Убедитесь, что вы установили buildpack-packager.

  2. Создайте файл manifest.yml в вашем сборочном пакете.

  3. Запустить упаковщик в режиме кэширования (...)

Я установил buildpack-manager на свой локальный компьютер и просто попытался запустить двоичные файлы, полученные от двоичного компоновщика. Я думал, что это может работать, так как есть файл sources.yml, который похож на файл manifest.yml

---
- url: http://pecl.php.net/get/apcu-5.1.17.tgz
  sha256: 6b11b477890a9c096ad856e0251920d1d8b9558b7d115256c027e0223755c793
- url: http://pecl.php.net/get/cassandra-1.3.2.tgz
  sha256: ff80de20482021266426e8c431a2205bc9cb5c18caebe0219de709f6745025df
- url: http://pecl.php.net/get/geoip-1.1.1.tgz
  sha256: b2d05c03019d46135c249b5a7fa0dbd43ca5ee98aea8ed807bc7aa90ac8c0f06
- url: http://pecl.php.net/get/igbinary-3.0.1.tgz
  sha256: 5959607f3e236e19a9d01e1a8c74800fb3138f3528ba6601deedbd8b83ab12f1
- url: http://pecl.php.net/get/gnupg-1.4.0.tgz
  sha256: 35e16bee11345a7d6bf57bea3cadf45e371ad1ed4e0218b0c06f6f637e4e1772
- url: http://pecl.php.net/get/imagick-3.4.4.tgz
  sha256: 8dd5aa16465c218651fc8993e1faecd982e6a597870fd4b937e9ece02d567077
- url: http://pecl.php.net/get/LZF-1.6.7.tgz
  sha256: 48178da24401976f8ac518905222af64c033f49f2a50d830e55de13fa80e8fe0
- url: http://pecl.php.net/get/mailparse-3.0.3.tgz
  sha256: bfaeae61342c147bcb66b9a90949722e04b65548e6a9d1eb4896aeb62409d302
- url: http://pecl.php.net/get/mongodb-1.5.3.tgz
  sha256: 8def2c74aa28e64839dee4b878bc92ad9164a45d84f55b519ac92f338ff8e1ba
- url: http://pecl.php.net/get/msgpack-2.0.3.tgz
  sha256: 9dfa3c79d985334f82a88b7577f81d3ce4114211af064cffccf4d7b084a28842
- url: http://pecl.php.net/get/oauth-2.0.3.tgz
  sha256: cb4b65bed8854f01bdf741e23f0a27cdc29618d588d8222a7bb0519b0332b4ae
- url: file:///tmp/x86_64-linux-gnu/ports/php7/7.1.0/php-7.1.0/ext/odbc-7.1.0.tar.gz
  sha256: 7f3d7b7e4ee115e39a7b73c2b9a055d0e84965c41367fc7f007065dee337e551
- url: file:///tmp/x86_64-linux-gnu/ports/php7/7.1.0/php-7.1.0/ext/pdo_odbc-7.1.0.tar.gz
  sha256: c410569a8bfdd1c879c60d1615231e083fb58d96e9bbae339d01e28831d16f7d
- url: http://pecl.php.net/get/rdkafka-3.1.0.tgz
  sha256: 410d417ae222e585e9ca128b28f1be300c0f41aa313cef2bf5a2235a8f472a27
- url: http://pecl.php.net/get/redis-4.3.0.tgz
  sha256: c0f04cec349960a842b60920fb8a433656e2e494eaed6e663397d67102a51ba2
- url: http://pecl.php.net/get/stomp-2.0.2.tgz
  sha256: b80b4287080846150c845c9e94ad288d01975e67031e3f242a03c70da8b33d2f
- url: http://pecl.php.net/get/xdebug-2.7.2.tgz
  sha256: b0f3283aa185c23fcd0137c3aaa58554d330995ef7a3421e983e8d018b05a4a6
- url: http://pecl.php.net/get/yaf-3.0.7.tgz
  sha256: 56219dadf344044afee8ec150d08c19263aeab5966adbe4b3b2b12241f0beb1f
- url: http://pecl.php.net/get/yaml-2.0.4.tgz
  sha256: 9786b0386e648f12cc18a038358bd57bee4906e350a2e9ab776d6a5f18fc6680
- url: http://pecl.php.net/get/memcached-3.1.3.tgz
  sha256: 20786213ff92cd7ebdb0d0ac10dde1e9580a2f84296618b666654fd76ea307d4
- url: file:///tmp/x86_64-linux-gnu/ports/php7/7.1.0/php-7.1.0/ext/tidy-7.1.0.tar.gz
  sha256: fea7cb8178471f069b3c5e91886b02bf3baac37d9f220bbab818361f33981864
- url: file:///tmp/x86_64-linux-gnu/ports/php7/7.1.0/php-7.1.0/ext/enchant-7.1.0.tar.gz
  sha256: b5aca213ab9049492cd817e8854d86587c1203f8d40e9b8be4c09d55cd8f13cb
- url: file:///tmp/x86_64-linux-gnu/ports/php7/7.1.0/php-7.1.0/ext/interbase-7.1.0.tar.gz
  sha256: 9ef19964c935e5ae93d2911b4ef1242e7a2bb17668755965ac8c0906c7cad046
- url: file:///tmp/x86_64-linux-gnu/ports/php7/7.1.0/php-7.1.0/ext/pdo_firebird-7.1.0.tar.gz
  sha256: 7f407ec73526cab168a60b5b63583dc183a6637081bc66f0a2abaa6118738252
- url: file:///tmp/x86_64-linux-gnu/ports/php7/7.1.0/php-7.1.0/ext/readline-7.1.0.tar.gz
  sha256: 5330ce5eca266a9c61ca677a5d87a206abc5e9ba2eda7f5d871183a488b88627
- url: file:///tmp/x86_64-linux-gnu/ports/php7/7.1.0/php-7.1.0/ext/wddx-7.1.0.tar.gz
  sha256: 82522949676b1850aa8cfecd816474c0014a6bafca0aca24f15b527ff1a9cb4b
- url: file:///tmp/x86_64-linux-gnu/ports/php7/7.1.0/php-7.1.0/ext/xmlrpc-7.1.0.tar.gz
  sha256: 6895a489f8f61b5980f86ba7cad6ddfaf605ae6f80481470f12c87335215e2d4
- url: file:///tmp/x86_64-linux-gnu/ports/php7/7.1.0/php-7.1.0/ext/recode-7.1.0.tar.gz
  sha256: 41da183171016288b614924d80c946e71ae60305aec93b9b093c345f5b47ad34
- url: http://pecl.php.net/get/amqp-1.9.4.tgz
  sha256: b66b8b8264749cb7a69ae4d09665dad1559b6c4f01430206c8e4187bcd8c782d
- url: http://downloads3.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64_10.3.4.tar.gz
  sha256: 8aac5f80f2e7432219c4e4043cff464ac61060d97e005347d1f62791bd017821
- url: http://pecl.php.net/get/lua-2.0.6.tgz
  sha256: 6602c5d95936f4a024435a492d1bec9965fac1d85e27da72a73142d2b85e382f
- url: https://github.com/phalcon/cphalcon/archive/v3.4.3.tar.gz
  sha256: b727fe6337f1553c50eb918dcd1665b0eafe5ac123e9896422471bc1828c218b
- url: https://github.com/nrk/phpiredis/archive/v1.0.0.tar.gz
  sha256: 6bd7b1f3d7d830cae64b74136ab0b0f76deaaebcad92027235a59e24cc28387c
- url: https://github.com/allegro/php-protobuf/archive/v0.12.4.tar.gz
  sha256: f19fb042684493b3f0e750d65ea6b06c5ea8a5f1052e42508d216a8d56c20863
- url: https://github.com/tideways/php-xhprof-extension/archive/v4.1.7.tar.gz
  sha256: 3e32ceacc9eec481e27b5df6d06de1e634294e2af9a64fe069bc686dba54fcb8
- url: https://github.com/tideways/php-xhprof-extension/archive/v5.0-beta3.tar.gz
  sha256: 4b2a12ab6ca2c7a0fd5d10c6f01fcecd7da77fbeda81f0bf19a17ad999e9ba24
- url: http://pecl.php.net/get/oci8-2.2.0.tgz
  sha256: cddf43b9c7204cf95980a1e4761a30313a07fbf163fc2120517f4e1b64df114a
- url: file:///tmp/x86_64-linux-gnu/ports/php7/7.1.0/php-7.1.0/ext/pdo_oci-7.1.0.tar.gz
  sha256: 252edc2c822c9079093579ef94e5624e2010c3d10df0518016bc0b7586f3cd81
- url: http://pecl.php.net/get/solr-2.4.0.tgz
  sha256: 22865dafb76fc5839e84a5bd423bb37d5062883e5dfc4d064b43129ac9f2752c
- url: https://github.com/alanxz/rabbitmq-c/archive/v0.9.0.tar.gz
  sha256: 316c0d156452b488124806911a62e0c2aa8a546d38fc8324719cd29aaa493024
- url: http://www.lua.org/ftp/lua-5.3.5.tar.gz
  sha256: 0c2eed3f960446e1a3e4b9a1ca2f3ff893b6ce41942cf54d5dd59ab4b3b058ac
- url: https://github.com/redis/hiredis/archive/v0.13.3.tar.gz
  sha256: 717e6fc8dc2819bef522deaca516de9e51b9dfa68fe393b7db5c3b6079196f78
- url: https://launchpad.net/libmemcached/1.0/1.0.18/+download/libmemcached-1.0.18.tar.gz
  sha256: e22c0bb032fde08f53de9ffbc5a128233041d9f33b5de022c0978a2149885f82
- url: https://github.com/edenhill/librdkafka/archive/v0.11.6.tar.gz
  sha256: 9c0afb8b53779d968225edf1e79da48a162895ad557900f75e7978f65e642032
- url: https://github.com/datastax/cpp-driver/archive/2.9.0.tar.gz
  sha256: 1fcf3a4626fe70c345ef7e40624b3f8910113fafb00a38f71357da146ea1a2ab
- url: http://www.unixodbc.org/unixODBC-2.3.7.tar.gz
  sha256: 45f169ba1f454a72b8fcbb82abd832630a3bf93baa84731cf2949f449e1e3e77

но это приводит к сообщению об ошибке

ошибка: не удалось прочитать файл VERSION: открыть ВЕРСИЮ: Das System kann die angegebene Datei nicht finden.

Так что, кажется, по крайней мере, отсутствует файл VERSION, и я предполагаю также некоторые другие файлы. Может ли кто-нибудь объяснить основные этапы создания собственного пакета сборки из созданных двоичных файлов?

Спасибо

1 Ответ

0 голосов
/ 20 июня 2019

Чтобы создать собственный сборочный пакет PHP, обычно включающий в себя проприетарные зависимости, такие как драйверы Oracle или SQL Server, вы можете сделать следующее:

  1. Сборка PHP.Это делается с помощью двоичного компоновщика.Следуйте инструкциям здесь .Создайте столько версий PHP, сколько вам нужно.Это создаст файлы tgz, которые содержат двоичные файлы.

  2. Разместите ваши пользовательские двоичные файлы на веб-сервере.Это может быть локальным или общедоступным, это зависит от ваших потребностей (см. Шаг # 5) ниже.

  3. Клонируйте PHP Buildpack и извлеките один из тегов стабильного выпуска,Не делайте , а не сборку от мастера, так как это действительно затрудняет понимание того, что вы получаете, или воссоздание вашей сборки.В случае сомнений выберите последний отмеченный выпуск.

  4. Отредактируйте файл manifest.yml.Если в нем уже есть записи для версий PHP, которые вы создали, вы можете просто изменить хэш uri, sha256 и modules.Вам необходимо добавить скомпилированные вами дополнительные расширения в список modules.Например, добавьте oci8 или pdo_oci к этому списку.Если вы компилируете версию PHP, которой нет в манифесте, скопируйте существующую запись и отредактируйте все свойства.Вы также можете настроить манифест на изменить версии PHP по умолчанию или удалить ненужные версии и уменьшить пакет сборки.

  5. На этом этапе выВы можете либо зафиксировать свои изменения, нажать на ветку пакета сборки PHP и установить cf push -b <url>, чтобы он указывал на вашу вилку, либо вы можете запустить упаковщик пакета сборки и создать файл пакета сборки.Затем вы можете взять это и cf create-buildpack или cf update-buildpack в своем фонде (требуются права администратора).

    Если вы используете cf push -b, то двоичные файлы, которые вы размещаете на шаге №2, должны быть доступны из CF Foundation, где вы запускаете свое приложение.Если вы создаете и загружаете пакет сборки, тогда двоичные файлы должны быть доступны только с виртуальной машины, на которой вы запускаете упаковщик пакета сборки.

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

...