0

我的网络应用运行在谷歌云平台上,最近我意识到应用的构建时间非常长,尤其是当你在测试一个特性时,比如说刷新页面,你可以看到启动应用需要很长时间。我正在寻找的是如何加快这个过程。我正在使用 docker 图像在谷歌云注册表上构建。我不想每次都重新构建所有 npm 包,当某些 npm 包中有更新时,我想重新构建应用程序。

这是我用于聚合物的 cloudbuild.yaml 文件

steps:
- name: 'gcr.io/cloud-builders/docker'
  args: [ 'build', '-t', 'gcr.io/$PROJECT_ID/myapp-polymer', '.' ]
images:
- 'gcr.io/$PROJECT_ID/myapp-polymer'

然后这是我的主要 cloudbuild.yaml 文件

steps:
- name: 'gcr.io/cloud-builders/npm'
  args: ['--prefix', 'myapp','install']
- name: 'gcr.io/cloud-builders/npm'
  args: ['--prefix', 'myapp/functions', 'install']
- name: 'gcr.io/$PROJECT_ID/myapp-polymer'
  args: ['cd', 'myapp']
- name: 'gcr.io/$PROJECT_ID/myapp-polymer'
  args: ['build']

我特别阅读了 Google Cloud API 部分“加快构建速度”(https://cloud.google.com/cloud-build/docs/speeding-up-builds

我认为它只是缓存构建图像并使用它。有什么方法可以在 Google Cloud 中专门缓存 npm 包、依赖项等,这样我就不必每次都构建整个应用程序?我的主要目标是减少构建时间,加快构建过程。

谢谢!

4

2 回答 2

3

你试过Kaniko吗?它可以将缓存保存在 gcr.io 中,并且如果您使用正确的步骤构建了 Dockerfile(请参阅https://cloud.google.com/blog/products/gcp/7-best-practices-for-building-containers) ,它应该可以为您节省很多时间。这是cloudbuild.yaml示例:

- name: 'gcr.io/kaniko-project/executor:latest'
  args:
  - --destination=gcr.io/$PROJECT_ID/image
  - --cache=true
  - --cache-ttl=XXh

更多信息:https ://cloud.google.com/cloud-build/docs/kaniko-cache

于 2019-11-24T01:53:04.360 回答
0

你可以使用码头工人。

将您的 npm 应用程序放入 docker。然后您可以将您的 docker 镜像(上传您的 docker 镜像的某些层)推送到云注册表,例如 gcr(谷歌云注册表)。在构建步骤之前,您可以从 gcr 中提取图像。

这是构建步骤的大致样子:

- name: 'gcr.io/cloud-builders/docker'
  args: [
          'build',
          '-t', 'test_image',
          '-f', 'Dockerfile',
          '.'
        ]
  id: 'build_test_image'
于 2018-11-08T15:27:02.167 回答