忽略子文件夹无法正常工作

时间:2017-03-19 03:54:17

标签: docker

我正在使用看起来像这样的.dockerignore文件:

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

所以我在这里说的是:忽略当前目录中的所有文件(此帖子与How to include local libraries in build?相关),wwwapp和{{1}除外} 忽略这些子目录中名为incnode_modules的所有目录

当我运行构建时:

bower_components

(这是我的Dockerfile):

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

然后运行一个容器:

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

如果我查看目录,我会看到node_modules文件夹!

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

所以# 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 的第一行工作正常,第4行,第5行和第6行也正常,但子目录失败了。为了完整起见,我最初使用.dockerignore,但也失败了。

表达这个的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

好的,显然问题是当我为忽略规则创建例外时,我必须重新应用异常,所以如果我这样做:

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

它有效,因为*/node_modules适用于“以上所有”,其中包括app。在我的原始声明中,我排除了我想要从规则中包含的目录