我正试图在monorepo中使用Yarn工作区在Google Cloud上构建next.js应用程序。我发现在构建过程中最慢的一点是安装节点模块,因为我们必须在几个不同的文件夹中进行安装。理想情况下,我想利用Docker来处理
node_modules
如果一切都没有改变。我的档案如下:
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的内容,如果没有任何更改,它将为
节点模块
. 一个非常关键的步骤是我们安装
next
稍后在生成过程中使用它从
package.json
:
"scripts": {
"build": "next build",
...
}
但是,当我进入第二步时
cloudbuild.yaml
,我的生成错误
env: 'next': No such file or directory
.
似乎我需要以某种方式“浮出水面”(因为没有更好的术语),无论在
云构建.yaml
并使
下一个
命令可用于第二步。但我的问题是我该怎么做?
我应该注意到,我对Docker还不太熟悉,我一直在想Docker的工作原理。