gpt4 book ai didi

node.js - 如何使用 docker + Google Cloud Build 公开构建步骤结果

转载 作者:行者123 更新时间:2023-12-02 21:04:16 25 4
gpt4 key购买 nike

我正在尝试使用 Yarn 工作区在 monorepo 中的 Google Cloud Build 上构建 next.js 应用程序。我发现我们在构建过程中最慢的一点是安装 Node 模块,因为我们必须在几个不同的文件夹中进行。理想情况下,我想利用 Docker 来处理 node_modules 的缓存。如果什么都没有改变。我的 Dockerfile 如下:

FROM node:10.13
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install -g yarn
RUN yarn
COPY . .

我的 cloudbuild.yaml 如下:
steps:
- name: 'gcr.io/cloud-builders/docker'
args: [ 'build', '-t', 'gcr.io/$PROJECT_ID/dashboard-modules', './packages/dashboard' ]
- name: node:10.15.1
entrypoint: yarn
# `yarn build-dev` relies on the installation of `next` that happens in the previous step
args: ['--cwd', 'packages/dashboard', 'build-dev']
...

我的预期结果是,在第一次构建时, COPY package*.json将查看 package.json 的内容,如果没有任何变化,它将保持 node_modules 的相同输出.这里一个非常关键的步骤是我们安装 next稍后在构建过程中用于从 package.json 构建应用程序本身:
"scripts": {
"build": "next build",
...
}

然而,当我进入 cloudbuild.yaml 的第二步时,我的构建错误 env: 'next': No such file or directory .

似乎我需要以某种方式“浮现”(因为没有更好的术语) cloudbuild.yaml 的第一步中发生的任何事情并制作 next命令可用于第二步。我的问题是我该怎么做?

我应该注意,我对 Docker 还很陌生,并试图了解它是如何工作的。

最佳答案

Cloud Build 的理念是我们将步骤以菊花链方式连接在一起以构建结果(通常是单个新的 docker 镜像或要写入 GCS 的工件)。 Cloud Build 配方中的每个步骤本身都在其自己的 docker 容器实例中运行。每一步之间的共享是/workspace中包含的数据这是一个共享卷。想法是每一步都将通过在/workspace 中操作数据来为构建增加一些值(value)。

您在 Cloud Build 配方中的第一个命令会导致构建一个新的 Docker 镜像,并将该镜像存储在 Docker 镜像的本地缓存中。但是,您的 Dockerfile 中描述的命令会在该 Docker 镜像中执行以构建镜像。他们不会对您的/workspace 环境进行任何更改,因此在您的第二个 Cloud Build 步骤中不会有任何"new"内容可供选择。

关于node.js - 如何使用 docker + Google Cloud Build 公开构建步骤结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58987303/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com