如何在gcloud中从部署中排除文件?

时间:2016-04-20 18:13:03

标签: google-cloud-storage google-cloud-platform gcloud

我已经构建了一个Node.js应用程序,我要将prime_factors :: Int -> [Int] prime_factors 1 = [] prime_factors n | factors == [] = [n] | otherwise = factors ++ prime_factors (n `div` (head factors)) where factors = take 1 $ filter (\x -> (n `mod` x) == 0) [2 .. n-1] comp :: [Int]->Int comp (ys)(x:xs) |maximum prime_factors xs elem prime_factors ys == x |otherwise tail x kgv :: Int -> Int -> Int kgv x y = abs ((x `quot` (comp x y)) * y) 部署到我的项目目录中并运行cd。这有效,但在文件中我还有一个JSON文件,其作用类似于我的应用程序的数据库,我不希望在部署时在网站上更新。我似乎无法找到任何办法。如果不可能,能够远程查看JSON文件并将其数据复制到本地文件,然后部署一切也会对我有所帮助,但我似乎无法做到这一点。

3 个答案:

答案 0 :(得分:10)

我相信您会想要在app.yaml中使用skip_files指令来排除您不想部署的路径或文件。

类似的东西:

skip_files:
  - ^your_data_dir/.*\.json?

答案 1 :(得分:6)

app.yaml中有skip_files指令可排除您不想部署的路径或文件。

但是,如果您正在处理node.js项目,则必须使用.gcloudignore文件,该文件将指定要排除的目录。

  

此.gcloudignore将阻止上载node_modules /目录以及所有以〜结尾的文件:

  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”)

答案 2 :(得分:1)

在这种情况下,.gcloudignore文件将有助于阻止任何文件或目录的上传。语法与.gitignore文件相同。

首先,您可以确保启用gcloudignore

gcloud config list

如果不是,则可以启用它:

gcloud config set gcloudignore/enabled true

一些gcloud之类的gcloud functions deploy命令可能会自动生成一个.gcloudignore文件。

.gcloudignore文件必须驻留在项目根文件夹中。

这是.gcloudignore命令自动生成的gcloud function deploy

# 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这就是部署的内容:

enter image description here

然后使用以下.gcloudignore

.gcloudignore
.git
.gitignore
.idea
node_modules
package-lock.json

这是部署的内容:

enter image description here

请参见more on this