忽略子文件夹无效

我正在使用一个.dockerignore文件,如下所示:

 * */node_modules */bower_components !www !app !inc 

所以这里我要说的是:除了wwwappinc 忽略当前目录中的所有文件(这篇文章涉及到: 如何在build中包含本地库 ), 并且忽略所有在这些子目录中名为node_modulesbower_components的目录

当我运行一个构build:

 build --no-cache -t test -f app/Dockerfile . 

(这里是我的Dockerfile):

 FROM node:latest RUN mkdir -p /usr/src/app WORKDIR /usr/src/app ADD . /usr/src/app/ 

然后运行一个容器:

 run -i --entrypoint=/bin/bash test 

如果我在目录中看我看到node_modules文件夹!

 # ls -alF total 20 drwxr-xr-x 5 root root 4096 Mar 19 03:39 ./ drwxr-xr-x 4 root root 4096 Mar 19 03:39 ../ drwxr-xr-x 4 root root 4096 Mar 18 03:26 inc/ drwxr-xr-x 3 root root 4096 Mar 19 00:57 app/ drwxr-xr-x 12 root root 4096 Mar 18 08:55 www/ # ls -alF app total 36 drwxr-xr-x 3 root root 4096 Mar 19 00:57 ./ drwxr-xr-x 5 root root 4096 Mar 19 03:39 ../ -rw-r--r-- 1 root root 38 Mar 19 00:57 .dockerignore -rw-r--r-- 1 root root 359 Mar 19 03:37 Dockerfile -rw-r--r-- 1 root root 700 Mar 18 04:50 config.json -rw-r--r-- 1 root root 3786 Mar 18 03:43 index.js drwxr-xr-x 119 root root 4096 Mar 17 18:57 node_modules/ -rw-r--r-- 1 root root 2910 Mar 17 20:51 npm-debug.log -rw-r--r-- 1 root root 348 Mar 19 03:24 package.json 

所以.dockerignore的第一行工作正常,第.dockerignore行也是如此,但子目录失败了。 为了完整起见,我最初使用**/node_modules但也失败了。

expression这个的正确方法是什么?

好吧,显然问题是,当我创build例外的忽略规则,我不得不重新申请例外,所以如果我这样做,而不是:

 * !www !app !inc */node_modules */bower_components 

它的工作原理是因为*/node_modules适用于“以上所有”,其中包括app 。 在我原来的声明中,我排除了我希望从规则中包含的目录