【问题标题】:Push Go lang web project binary to CloudFoundry将 Go lang Web 项目二进制文件推送到 CloudFoundry
【发布时间】:2017-02-21 05:53:17
【问题描述】:

我们能否将 Go Web 服务二进制文件部署/推送到 Cloud Foundry,而不是推送代码库并在那里构建?如果可以的话怎么办?我试图找到任何相关的东西,但找不到任何东西。

提前致谢

【问题讨论】:

    标签: cloud-foundry predix


    【解决方案1】:

    我们可以将我们的 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 将发送当前目录中的所有内容。

    【讨论】:

      【解决方案2】:

      对于 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
      • 参考这个链接docs.cloudfoundry.org/devguide/deploy-apps/… 它说它部署了整个代码库。
      • 您可能会将暂存过程与应用编译混淆。在cf push 上,我传递存档详细信息(jar、war、zip 或文件夹位置)以及可选的要使用的 buildpack。无关的文件和工件被排除在上传之外。 Cloud Foundry 作为暂存过程的一部分,将根据需要下载运行时依赖项(例如 nodejs 应用程序,它将下载包)。请查看暂存流程docs.pivotal.io/pivotalcf/1-9/concepts/…
      • Kamal,就您构建二进制文件而言,您可以在 Mac 上为任何平台的 GO 应用程序构建二进制文件。 $> OOS=windows go build -o .exe $> OOS=linux go build -o $> OOS=linux go build -o 然后在相应的存档上执行cf push
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多