Node.js 运行时是否需要将节点“U模块添加到.gcloudignore”中;gcloud builds submit./项目文件夹";?
这是我的项目结构:Node.js 运行时是否需要将节点“U模块添加到.gcloudignore”中;gcloud builds submit./项目文件夹";?,node.js,docker,node-modules,gcloud,google-cloud-build,Node.js,Docker,Node Modules,Gcloud,Google Cloud Build,这是我的项目结构: 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.ya
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
从我的配置文件中,由于没有人要求复制node\u modules
文件夹,因此似乎没有必要将node\u modules
添加到.gcloudignore
。但是是吗
我问这个是因为我看到这个说:
运行gcloud builds submit时。。。您可以提供一些源代码和Dockerfile或配置文件。前者是第二个的一个简单例子,一个包含运行docker build的单个步骤的配置文件
配置文件(YAML)列出了一系列容器映像,其中包含以串联方式运行的参数。最初,Cloud Build将指定的源(可以是当前目录)复制到计算引擎VM(由服务创建)作为目录(自动装入每个容器)作为/workspace
如果它复制源,它是否也会复制node\u模块
?我应该将其添加到.gcloudignore
还是没有必要?是的,您可以跳过节点模块,因为您在构建中不使用它们(而且它的上传量很大,而且很长)。在您的命令npmci
中,我确信您下载了依赖项,因此,将node\u模块添加到.gcloudignore
(以及.gitignore
中)是的,您可以跳过节点模块,因为您在构建中不使用它们(而且上传起来又大又长)。在您的命令npm ci
中,我确信您下载了依赖项,因此,请将node\u模块添加到.gcloudignore
(还有.gitignore
中)谢谢。但我还是有点困惑。在这种情况下,是否必须将其添加到.gcloudignore
?如果我不去,会不会有麻烦?默认情况下,.gitignore
中已经添加了它。.gcloudignore
是对.gitignore
的补充。如果在.gitignore
中排除了节点\u模块
,则无需将其也添加到.gcloudignore
中,谢谢。但我还是有点困惑。在这种情况下,是否必须将其添加到.gcloudignore
?如果我不去,会不会有麻烦?默认情况下,.gitignore
中已经添加了它。.gcloudignore
是对.gitignore
的补充。如果在.gitignore
中排除节点\u模块
,则无需将其也添加到.gcloudignore