使用Binary-Builder创建自定义Buildpack

时间:2019-06-19 12:27:23

标签: cloudfoundry pivotal-cloud-foundry

当前,我正在尝试将Cloud Foundry中的PHP应用程序与Oracle数据库连接。 为此,我需要使用oci8驱动程序构建php的二进制文件,以便在我的应用程序中使用pdo_oci。为此,我正在使用

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

使用docker。这似乎很好。但是在此之后,我不知道如何继续前进。

我已经阅读了有关自定义Buildpacks(https://docs.cloudfoundry.org/buildpacks/custom.html)的Cloud Foundry文档。在那里,他们通过三个步骤描述了自定义Buildpacks的创建:

  1. 确保已安装buildpack-packager。

  2. 在您的buildpack中创建manifest.yml。

  3. 以缓存模式运行打包程序(...)

我已经在本地计算机上安装了buildpack-manager,只是试图针对我从二进制生成器获得的二进制文件运行。我认为它可以正常运行,因为有一个类似于manifest.yml 的sources.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

但这会产生错误消息

错误:无法读取版本文件:打开版本:Das System kann die Angegebene Datei nicht finden。

因此,似乎至少缺少一个VERSION文件,而且我猜还有其他文件。谁能解释一下如何从创建的二进制文件创建自定义buildpack的基本步骤?

谢谢

1 个答案:

答案 0 :(得分:0)

要构建自定义的PHP buildpack(通常将其包含Oracle或SQL Server驱动程序之类的专有依赖项,您可以执行以下操作。

  1. 构建PHP。这是用binary-builder完成的。遵循instructions here。根据需要构建尽可能多的PHP版本。这将产生包含二进制文件的tgz文件。

  2. 将自定义二进制文件托管在Web服务器上。这可以是本地的也可以是公共的,这取决于您的需求(请参阅下面的步骤5)。

  3. 克隆PHP Buildpack并签出稳定版本标签之一。不要从主版本中进行构建,因为这真的很难知道您要获取的内容或重新创建构建。如有疑问,请选择最新的标记版本。

  4. 编辑manifest.yml文件。如果它已经具有您所构建的PHP版本的条目,则只需修改urisha256哈希和modules。您需要将编译后的其他扩展名添加到modules列表中。例如,将oci8pdo_oci附加到该列表。如果要编译清单中不存在的PHP版本,请复制现有条目并编辑所有属性。您还可以将清单调整为change default versions of PHP或删除不需要的版本并精简buildpack。

  5. 这时,您可以提交更改,推送到PHP buildpack的派生并将cf push -b <url>设置为指向您的派生,或者可以运行build pack packager并创建一个buildpack文件。然后,您可以在基础中使用cf create-buildpackcf update-buildpack(需要管理员权限)。

    如果使用cf push -b,则必须从运行应用程序的CF基础中访问在步骤2中托管的二进制文件。如果创建并上传了构建包,则只需从运行构建包打包程序的VM即可访问二进制文件。

希望有帮助!