Google Cloud BuildPack

2020-05-07 03:35:55

此存储库包含一组构建器和构建包,它们专为在Google Cloud的容器平台上运行而设计:Cloud Run、GKE、Anthos、App Engine、Cloud Functions和Compute Engine Running Container-Optimed OS。它们与CNCF Buildback 100%兼容。

Builder包含生成包和执行生成的检测顺序的容器映像。

构建一个可执行文件,它检查您的应用程序源代码,并制定构建和运行您的应用程序的计划。

这是一个通用的构建器,可以创建可在大多数平台(如Kubernetes/Anthos、Kative/Cloud Run、Container OS等)上运行的容器镜像,应由大多数用户使用。构建器尝试自动检测源代码的语言,还可以通过设置GOOGLE_Function_TARGET环境变量来构建与Google Cloud Function Framework兼容的函数。

这些构建器创建的容器镜像设计用于在Google Cloud的AppEngine和Functions服务上运行。大多数构建包与通用构建器中的构建包相同。

与通用构建器相比,有两个主要区别。首先,还有一些附加的构建包可以添加特定于每个服务的转换。其次,为了优化执行速度,每种语言都有单独的构建器。

Google Cloud Buildpack项目提供了适合与pack、kpack、tekton、skaffold和其他支持BuildPacksv3规范的工具一起使用的构建器映像。

下面的命令调用pack以应用通用构建器在当前目录中构建应用程序,然后将结果打包到名为<;app-name>;的本地容器映像中。

如果您的应用程序需要安装额外的系统包并在运行时可用,您可以通过定制运行容器映像来实现这一点。

cat>;run.Dockerfile<;<;<;EOF from gcr.io/buildpacks/gcp/run user root run apt-get update&;&;apt-get install-y--no-install-Recommise\imagemagick&;&apt-get lean&;\rm-rf/var/lib/apt/list/*user cnb EOFdocker build-t my-run-image-。

如果您需要某些包来构建应用程序,请基于基本构建器创建自定义构建器映像:

cat>;builder.Dockerfile<;<;<;eOF来自gcr.io/buildpack/builder用户root运行apt-get update&;&;apt-get install-y--no-install-Recommise\Subversion&;&;\apt-get lean&;&;\rm-rf/var/lib/apt/list/*user cnb EOFdocker build-t my-builder-image-f builds。

Google Cloud BuildPack支持使用一组跨运行时支持的环境变量进行配置。

google_entrypoint指定执行容器时运行的命令;相当于Dockerfile中的入口点。

GOOGLE_Function_TARGET,用于围绕Google Cloud Functions Framework构建的源代码。指定要调用的函数的名称。

示例:myFunction将使Functions Framework调用同名的函数。

如果指定了GOOGLE_RUNTIME,则强制运行时选择加入。如果运行时构建包出现在多个组中,将选择第一个组,这与构建包规范一致。(仅适用于安装语言运行时的构建包)。

GOOGLE_RUNTIME_VERSION如果指定,将覆盖要安装的运行时版本。(仅适用于安装语言运行时的构建包)。

GOOGLE_DEVMODE启用开发模式构建包。Skaffold使用它来实现实时本地开发,其中对源代码的更改会触发自动容器重建。要使用,请安装Skaffold并运行skaffold dev。

常规:缓存是特定于项目的,而不是跨项目的。依赖项(如JDK)不能跨项目共享,需要在第一次构建时重新下载。

Java:不可能将参数传递给maven命令(例如,特定的Maven配置文件)。

NODE:删除现有的NODE_MODULES目录,并使用Package.json和锁定文件(如果存在)重新安装依赖项。

Go Go 1.14在Linux内核的某些版本(5.3.15+、5.4.2+或5.5+以外的版本)中触发内核错误。如果使用受影响的版本,请在/etc/docker/daemon.json中设置以下内容:

请注意,此项目不是官方支持的Google产品。Google Cloud的客户可以使用标准支持渠道获取与Google Cloud产品一起使用构建包的帮助。