【发布时间】:2017-02-21 05:53:17
【问题描述】:
我们能否将 Go Web 服务二进制文件部署/推送到 Cloud Foundry,而不是推送代码库并在那里构建?如果可以的话怎么办?我试图找到任何相关的东西,但找不到任何东西。
提前致谢
【问题讨论】:
标签: cloud-foundry predix
我们能否将 Go Web 服务二进制文件部署/推送到 Cloud Foundry,而不是推送代码库并在那里构建?如果可以的话怎么办?我试图找到任何相关的东西,但找不到任何东西。
提前致谢
【问题讨论】:
标签: cloud-foundry predix
我们可以将我们的 GO Web 服务二进制文件部署/推送到 CloudFoundry,而不是推送代码库并在那里构建吗?
是的。您可以推送任何二进制文件,只要它以兼容的方式编译,并且附带任何库依赖项(不包含在根文件系统中)。构建兼容的二进制文件通常是棘手的部分,但对于 Golang 应用程序,我认为它不应该那么难。
如果可以的话怎么办?
不要使用 Go 构建包。它需要代码,并会尝试为您编译它。
相反,您可以像往常一样在 Linux 机器、VM 或 w/Docker 上进行构建。为了获得最佳兼容性,请使用与您的 CF 平台上的堆栈匹配的系统(运行 cf stacks 以查看)。撰写本文时的默认堆栈是 cflinuxfs2,它基于 Ubuntu 14.04 Trusty。你也可以使用cloudfoundry/cflinuxfs2 docker 镜像。
然后使用二进制构建包推送生成的二进制文件。
https://docs.cloudfoundry.org/buildpacks/binary/index.html
例如:cf push -b binary_buildpack -c './my_binary_name'
您可能还需要-p 来指示您的二进制文件所在的文件夹/路径,否则cf push 将发送当前目录中的所有内容。
【讨论】:
对于 Go,您将二进制文件而不是代码推送到云代工厂,就像任何其他应用程序一样。
这是 Go 中的 sample app。它展示了如何使用大厅管道来构建和推送应用程序。您可以跳过 ci/cd 方面。只需编译代码并执行cf push。
这是另一个可能有帮助的例子 https://blog.anynines.com/how-to-deploy-a-go-app-on-anynines-and-cloud-foundry/
【讨论】:
cf push 会推送整个代码库并在 CF 中编译代码,因为与 java 不同,它会创建依赖于机器和操作系统架构和平台的二进制文件,所以如果我在mac 并将该二进制文件推送到 CF,它将如何工作? @askX
cf push 上,我传递存档详细信息(jar、war、zip 或文件夹位置)以及可选的要使用的 buildpack。无关的文件和工件被排除在上传之外。 Cloud Foundry 作为暂存过程的一部分,将根据需要下载运行时依赖项(例如 nodejs 应用程序,它将下载包)。请查看暂存流程docs.pivotal.io/pivotalcf/1-9/concepts/…
cf push。