在 .gcloudignore 中包含排除文件夹中的子文件夹

See*_*ven 8 gcloud google-cloud-build google-cloud-run

我正在尝试使用命令将带有 Dockerfile 的 Node 项目部署到 Google Cloud Run gcloud beta run deploy

长话短说,我想在 Dockerfile 中node_modules/my-module运行后复制本地:RUN npm install

COPY node_modules/my-module /app/node_modules/my-module/
Run Code Online (Sandbox Code Playgroud)

(我只在开发过程中这样做,以避免提交和推动my-module测试中的每个更改)。

不幸的是,Docker 无法复制此目录,因为默认情况node_modules下它不会上传到 Cloud Build。

所以我创建了这个.gcloudignore文件来覆盖默认值:

.gcloudignore
.git
.gitignore

node_modules/
!node_modules/my-module/
Run Code Online (Sandbox Code Playgroud)

我尝试了很多其他语法,但没有一个允许我node_modules在包含时排除node_modules/my-module.

node_modules但是,我可以通过从文件中省略整个目录来包含整个目录.gcloudignore,但这显然需要很长时间才能上传。

您知道如何将本地模块上传到 Cloud Build 吗?

See*_*ven 9

阅读此要点的评论后,我意识到您还必须包含父目录,如下所示:

node_modules/**

!node_modules/
!node_modules/my-module/**
Run Code Online (Sandbox Code Playgroud)

node_modules这将从exceptmy-module及其内容中排除所有子文件夹(这一点**很重要,否则只会包含空文件夹)。