问题
I have built a Node.js app and what I do to deploy is cd into my project's directory and run gcloud preview app deploy. This works, but in the files I also have a JSON file which acts like the database for my application, which I do not want updated on the site when I deploy. I cannot seem to find any way of doing this. If it's not possible, being able to see the JSON file remotely and copy its data to the local one and then deploy everything would do me too, but I cannot seem to be able to do that either.
回答1:
I believe you will want to use the skip_files directive in your app.yaml to exclude paths or files you do not want deployed.
Something like:
skip_files:
- ^your_data_dir/.*\.json?
回答2:
There is skip_files directive in your app.yaml to exclude paths or files you do not want deployed.
But If you are working on a node.js project you would have to use .gcloudignore file which will specify which directories to exclude.
This .gcloudignore would prevent the upload of the node_modules/ directory and any files ending in ~:
node_modules/
*~
Reference to documentation:
1. https://cloud.google.com/sdk/gcloud/reference/topic/gcloudignore
2. https://cloud.google.com/appengine/docs/standard/nodejs/config/appref (search 'skip_files')
回答3:
In this case, a .gcloudignore file would help by preventing the upload of any file or directory. The syntax is the same as the .gitignore file.
First you could make sure gcloudignore is enabled:
gcloud config list
If it is not, then you may enable it:
gcloud config set gcloudignore/enabled true
Some gcloud commands like gcloud functions deploy may automatically generate a .gcloudignore file.
The .gcloudignore file must reside in the project root folder.
Here is the .gcloudignore that is automatically generated by the gcloud function deploy command:
# 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
This worked fine for me with a NodeJS project with the following structure:
~/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
In this case, without the .gcloudignore this is what is deployed:
And with the following .gcloudignore:
.gcloudignore
.git
.gitignore
.idea
node_modules
package-lock.json
This is what is deployed:
See more on this.
来源:https://stackoverflow.com/questions/36751908/how-can-i-exclude-a-file-from-deploy-in-gcloud