Cloud Run 的“gcloud builds submit”

Posted

技术标签:

【中文标题】Cloud Run 的“gcloud builds submit”【英文标题】:`gcloud builds submit` for Cloud Run 【发布时间】:2019-09-14 17:28:44 【问题描述】:

我有这种情况,因为documentation不清楚。 gcloud builds submit --tag gcr.io/[PROJECT-ID]/helloworld 命令将

归档我的源文件夹的内容,然后在 Google 构建服务器上运行 docker build。 此外,它仅查看 .gitignore 文件以获取要归档的内容。如果是 docker 构建,它应该尊重 .dockerignore 文件。 也没有关于如何编译应用程序的消息。如果不是预编译的应用程序,则必须在它被 dockerized 之前对其进行编译。

快速指南仅考虑应用程序是预编译的应用程序,并且需要根据 .gitignore 的文件夹的所有内容来运行应用程序。人们不会意识到新技术的所有这些。我只是自己想出来的。

因此,另一种方法是在 docker 文件中包含构建步骤(这将使我的图像变得繁重)或在本地(手动)创建一个 docker 图像,然后将图像提交到存储库(手动)然后发布到云运行(使用记录的第二个命令或手动)。

这里有什么我遗漏的吗?

【问题讨论】:

【参考方案1】:

Cloud Build 尊重 .dockerignore。它将上传不在.gitignore 中的所有文件,但一旦上传,它将尊重.dockerignore 关于哪些文件用于构建。

编译您的应用程序通常与“容器化”它同时完成。例如,对于 Node.js 应用程序,Dockerfile 必须运行 npm install --production。我建议查看许多示例 in the quickstart。

【讨论】:

我的意思是,文档应该说明它将根据您的 .gitignore 归档您的源代码。然后,如果您的代码在 dockerization 之前需要编译,则您的 dockerfile 必须包含编译步骤。需要npm install 代替npm install --production 但是是的,这是一个测试版,您将收到许多关于设置正确快速启动的反馈。如果实际上不允许用户共享他们的完整源代码并通过无意上传到您的服务器而陷入合规问题,则应该解释另一种方法。上述命令实际作用的详细信息在哪里。 如果您创建 .gcloudignore 文件,则删除 .gitignored 文件的隐式排除。这允许将本地构建的资产添加到 Dockerfile 的工作流程。为了清晰和可移植性,最好在 Dockerfile 中管理端到端管道。 cloud.google.com/sdk/gcloud/reference/topic/gcloudignore @Grayside 我会尝试,但不确定这是否符合我的要求。我在答案中选择了以下dustin建议的选项2。这是我觉得最好的选择,除非您使用 CI 平台构建图像,并且您希望通过分布在多个团队成员之间的快速开发来自动化庞大的构建过程。【参考方案2】:

我想你已经明白了,基本上你的选择是:

Building using Cloud Build Building locally and pushing using Docker

通常,如果您需要额外的构建步骤,我建议您将它们包含在您的 Docker 文件中。理想情况下,无论哪种情况,您都应该能够从源代码 + Dockerfile 转换为完整的映像。

【讨论】:

以上是关于Cloud Run 的“gcloud builds submit”的主要内容,如果未能解决你的问题,请参考以下文章

cloudbuild.yaml 上的错误:(gcloud.builds.submit)将 cloudbuild.yaml 解释为构建配置:“列表”对象没有属性“项目”

Terraform:Cloud Run 服务上的 Cloud Endpoints?

如何为 Cloud Build 用于 Cloud Run 部署的 Cloud Storage 存储分区指定区域?

Cloud Scheduler 调用 Cloud Run 服务的身份验证

Cloud Run 完全托管连接到 Cloud SQL:这是不是支持 SQL Server?

尝试运行 Cloud Run 作业时,Cloud Scheduler 的权限被拒绝