1

我正在使用 Google Cloud Builder (GCB) 构建一些 Node.js 代码。我正在使用 npm 的新package-lock.json功能来固定依赖项。这在npm ci使用npm@5.7.1. 不幸的是,GCB 的所有 npm 图像当前都设置为npm@5.6.0

如何在不创建自定义构建器映像的情况下在 GCB 中使用不同的 npm 版本?

编辑:可能并非所有 GCB 的图像都设置为npm@5.6.0,但我需要使用的图像 ( node-8.11.0) 设置为此版本。

4

1 回答 1

1

我通过基于 cloud-builder 的 npm 映像创建自己的容器映像解决了这个问题。

Dockerfile:

FROM gcr.io/cloud-builders/npm:node-8.11.0

ARG NPM_VERSION
RUN npm i -g npm@${NPM_VERSION}

ENTRYPOINT ["npm"]

cloudbuild.yaml:

steps:
- name: 'gcr.io/cloud-builders/docker'
  args:
  - 'build'
  - '--build-arg=NPM_VERSION=latest'
  - '--tag=gcr.io/$PROJECT_ID/npm:latest'
  - '.'

images:
- 'gcr.io/$PROJECT_ID/npm:latest'

gcloud builds submit . --config=cloudbuild.yaml从包含Dockerfilecloudbuild.yaml文件的同一个文件夹中运行。这将构建提交给 GCB 并在我项目的容器注册表中发布了一个图像。然后,我在cloudbuild.yaml需要升级 npm 版本的其他项目中使用了此图像,如下所示:

steps:
- id: frontend_install
  name: 'gcr.io/$PROJECT_ID/npm:latest'
  args: ['ci']
  waitFor: ['-']

完成此操作后,一切都按预期工作。

于 2018-08-01T21:12:39.600 回答