使用PHP自定义扩展构建的Cloud Foundry应用程序在部署后消失



我开发了一个首席信息官Blumix Cloud Foundry PHP应用程序,需要一些额外的组件。

我曾经https://github.com/cloudfoundry/php-buildpack用于构建。我在它的文档中读到,我可以添加自己的扩展名。我做到了,添加了tar.tgz,并在extension.py中添加了如何安装它的说明

目标位置为:/home/vcap/。我看到安装运行良好,并且在部署阶段看到了文件夹(在DevOps Pipelines部署阶段日志和历史记录中(。

但是,当部署通过,并且我使用部署的php页面读取文件夹时,我发现它不在那里。我在部署日志中读到了"容器已成功销毁"的消息。也许整个安装环境都被破坏了?在部署文件结构中,哪里有安全的位置可以安装组件,以便在部署通过后保留这些组件?

我正在使用def compile(install):来放置unix命令。示例:os.system('ls')以列出安装文件夹的内容。它们工作正常。

提前Thx!

您的应用程序使用两种完全不同的环境:暂存和运行时。暂存是构建包运行的地方&运行时是staging产品(即您的应用程序(运行的地方。

不幸的是,路径在暂存和运行时并不相同。在运行时,您的应用程序位于/app/home/vcap/app下(前者是后者的符号链接(。暂存不同。有一个/home/vcap目录,但它不用于任何用途。

相反,构建包脚本是通过cli参数提供的使用路径。这一切都记录在这里。

作为PHP构建包扩展,您可以通过查看构建包维护的上下文来访问cli args和许多其他内容。这将直接传递到构建包扩展方法中,如service_environment&service_commandscompile构建包扩展方法略有不同,因为传入的参数不是内容,但该参数确实引用了上下文(它是install.builder._ctx(。

说了这么多,我现在不建议使用PHP构建包扩展。构建包正在被重写,该功能正在被删除。它不会有直接的替代品,但最接近的是Composer执行脚本的能力。我的建议是看看你是否可以使用Composer功能。它将更加便携,因为它不依赖于特定于构建包的行为。

相关内容

最新更新