我正在使用看起来像这样的.dockerignore
文件:
*
*/node_modules
*/bower_components
!www
!app
!inc
所以我在这里说的是:忽略当前目录中的所有文件(此帖子与How to include local libraries in build?相关),www
,app
和{{1}除外} 和忽略这些子目录中名为inc
和node_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
,但也失败了。
表达这个的正确方法是什么?
答案 0 :(得分:2)
*
!www
!app
!inc
*/node_modules
*/bower_components
它有效,因为*/node_modules
适用于“以上所有”,其中包括app
。在我的原始声明中,我排除了我想要从规则中包含的目录