node.js - 运行“gcloud builds submit ./project-folder”时是否需要将 node_modules 添加到 .gcloudignore?
问题描述
这是我的项目结构:
project/
node_modules/
src/
.gcloudignore
cloudbuild.yaml
Dockerfile
package.json
这是我构建它的方式:
gcloud builds submit ./project --config=./project/cloudbuild.yaml --project=$PROJECT_ID // AND SOME SUBSTITUTIONS
这是我的cloudbuild.yaml
文件:
steps:
# BUILD IMAGE
- name: "gcr.io/cloud-builders/docker"
args:
- "build"
- "--tag"
- "gcr.io/$PROJECT_ID/$_SERVICE_NAME:$_TAG_NAME"
- "."
timeout: 180s
# PUSH IMAGE TO REGISTRY
- name: "gcr.io/cloud-builders/docker"
args:
- "push"
- "gcr.io/$PROJECT_ID/$_SERVICE_NAME:$_TAG_NAME"
timeout: 180s
# DEPLOY CONTAINER WITH GCLOUD
- name: "gcr.io/google.com/cloudsdktool/cloud-sdk"
entrypoint: gcloud
args:
- "run"
- "deploy"
- "$_SERVICE_NAME"
- "--image=gcr.io/$PROJECT_ID/$_SERVICE_NAME:$_TAG_NAME"
- "--platform=managed"
- "--region=$_REGION"
- "--port=8080"
- "--allow-unauthenticated"
timeout: 180s
# DOCKER IMAGES TO BE PUSHED TO CONTAINER REGISTRY
images:
- "gcr.io/$PROJECT_ID/$_SERVICE_NAME:$_TAG_NAME"
这是我的Dockerfile
:
FROM node:12-slim
WORKDIR /
COPY ./package.json ./package.json
COPY ./package-lock.json ./package-lock.json
COPY ./src ./src
RUN npm ci
从我的配置文件中,由于没有向copy
文件node_modules
夹告知任何内容,因此似乎没有必要添加node_modules
到.gcloudignore
. 但是是吗?
我问这个是因为我看到这个答案说:
当您运行 gcloud builds submit... 时,您会提供一些源代码以及 Dockerfile 或配置文件。前者是后者的一个简单案例,一个配置文件包含一个运行 docker build.... 的单个步骤。
配置文件 (YAML) 列出了一系列容器镜像,其中包含串行运行的参数。最初,Cloud Build将指定的源(可以是当前目录)作为 /workspace 的目录(自动挂载到每个容器中)复制到 Compute Engine 虚拟机(由服务创建)。
如果它复制源,它也会复制node_modules
吗?我应该添加它.gcloudignore
还是没有必要?
解决方案
是的,您可以跳过节点模块,因为您不会在构建中使用它们(而且上传时间长且巨大)。在您的命令npm ci
中,我确定您下载了依赖项,因此,node_modules
将.gcloudignore
.gitignore
推荐阅读
- c++ - 运算符重载中的范围运算符
- circuit-sdk - 如何使用 Circuit Bot 通过 Rest API 消息在 Circuit Conversation 中发布消息
- c# - Microsoft.Extensions.Logging - LogError 未记录异常
- python - Keras:“顺序”对象没有属性“_feed_input_names”
- reactjs - 反应和统一
- java - 如何从 OneToOne 关系中获取特定字段?
- c# - 按周/月分组
- forms - 通过 Flutter 中的表单将图像上传到服务器?
- makefile - make: Circular b <- b 依赖被删除
- karate - 将参数传递给功能后空手道