如何从 gcloud 中的部署中排除文件?
How can I exclude a file from deploy in gcloud?
我构建了一个 Node.js 应用程序,我所做的部署是 cd
到我的项目目录和 运行 gcloud preview app deploy
。这有效,但在文件中我还有一个 JSON 文件,它充当我的应用程序的数据库,我不想在部署时在网站上更新它。
我似乎找不到任何方法。
有什么想法吗?
我相信您会希望在 app.yaml 中使用 skip_files 指令来排除您不想部署的路径或文件。
类似于:
skip_files:
- ^your_data_dir/.*\.json?
您的 app.yaml 中有 skip_files 指令以排除您不想部署的路径或文件。
但是,如果您正在处理 node.js 项目,则必须使用 .gcloudignore
文件,该文件将指定要排除的目录。
This .gcloudignore would prevent the upload of the node_modules/ directory and any files ending in ~:
node_modules/
*~
参考文档:
1. https://cloud.google.com/sdk/gcloud/reference/topic/gcloudignore
2. https://cloud.google.com/appengine/docs/standard/nodejs/config/appref(搜索'skip_files')
在这种情况下,.gcloudignore
文件有助于防止上传任何文件或目录。语法与 .gitignore
文件相同。
首先您可以确保 gcloudignore
已启用:
gcloud config list
如果没有,您可以启用它:
gcloud config set gcloudignore/enabled true
某些 gcloud
命令,如 gcloud functions deploy
可能会自动生成 .gcloudignore
文件。
.gcloudignore
文件 必须 位于项目根文件夹中。
这里是gcloud function deploy
命令自动生成的.gcloudignore
:
# This file specifies files that are *not* uploaded to Google Cloud Platform
# using gcloud. It follows the same syntax as .gitignore, with the addition of
# "#!include" directives (which insert the entries of the given .gitignore-style
# file at that point).
#
# For more information, run:
# $ gcloud topic gcloudignore
#
.gcloudignore
# If you would like to upload your .git directory, .gitignore file or files
# from your .gitignore file, remove the corresponding line
# below:
.git
.gitignore
node_modules
对于具有以下结构的 NodeJS 项目,这对我来说效果很好:
~/Workspace/my-project $ tree -a
.
├── .idea
│ ├── func-project.iml
│ ├── misc.xml
│ ├── modules.xml
│ ├── vcs.xml
│ └── workspace.xml
├── .gcloudignore
├── index.js
├── package-lock.json
└── package.json
在这种情况下,没有 .gcloudignore
这是部署的内容:
和与以下.gcloudignore
:
.gcloudignore
.git
.gitignore
.idea
node_modules
package-lock.json
这是部署的内容:
参见 more on this。
我构建了一个 Node.js 应用程序,我所做的部署是 cd
到我的项目目录和 运行 gcloud preview app deploy
。这有效,但在文件中我还有一个 JSON 文件,它充当我的应用程序的数据库,我不想在部署时在网站上更新它。
我似乎找不到任何方法。
有什么想法吗?
我相信您会希望在 app.yaml 中使用 skip_files 指令来排除您不想部署的路径或文件。
类似于:
skip_files:
- ^your_data_dir/.*\.json?
您的 app.yaml 中有 skip_files 指令以排除您不想部署的路径或文件。
但是,如果您正在处理 node.js 项目,则必须使用 .gcloudignore
文件,该文件将指定要排除的目录。
This .gcloudignore would prevent the upload of the node_modules/ directory and any files ending in ~:
node_modules/
*~
参考文档:
1. https://cloud.google.com/sdk/gcloud/reference/topic/gcloudignore
2. https://cloud.google.com/appengine/docs/standard/nodejs/config/appref(搜索'skip_files')
在这种情况下,.gcloudignore
文件有助于防止上传任何文件或目录。语法与 .gitignore
文件相同。
首先您可以确保 gcloudignore
已启用:
gcloud config list
如果没有,您可以启用它:
gcloud config set gcloudignore/enabled true
某些 gcloud
命令,如 gcloud functions deploy
可能会自动生成 .gcloudignore
文件。
.gcloudignore
文件 必须 位于项目根文件夹中。
这里是gcloud function deploy
命令自动生成的.gcloudignore
:
# This file specifies files that are *not* uploaded to Google Cloud Platform
# using gcloud. It follows the same syntax as .gitignore, with the addition of
# "#!include" directives (which insert the entries of the given .gitignore-style
# file at that point).
#
# For more information, run:
# $ gcloud topic gcloudignore
#
.gcloudignore
# If you would like to upload your .git directory, .gitignore file or files
# from your .gitignore file, remove the corresponding line
# below:
.git
.gitignore
node_modules
对于具有以下结构的 NodeJS 项目,这对我来说效果很好:
~/Workspace/my-project $ tree -a
.
├── .idea
│ ├── func-project.iml
│ ├── misc.xml
│ ├── modules.xml
│ ├── vcs.xml
│ └── workspace.xml
├── .gcloudignore
├── index.js
├── package-lock.json
└── package.json
在这种情况下,没有 .gcloudignore
这是部署的内容:
和与以下.gcloudignore
:
.gcloudignore
.git
.gitignore
.idea
node_modules
package-lock.json
这是部署的内容:
参见 more on this。