多阶段构建不能从.dockerignore中排除文件

时间:2018-04-19 10:07:26

标签: docker

当我尝试减小图像的大小时,我使用了多阶段构建。但是有一个问题是它没有从第二张图像中排除文件(.dockerignore提到的文件)。有以下示例:

myfolder/      
node_modules/
.dockerignore 
.gitignore    
Dockerfile  
package.json  
index.js
yarn.lock

和Dockerfile:

FROM node:alpine

WORKDIR /app
COPY . .

# Until now, node_modules folder has not existed.

RUN yarn

FROM node:alpine
WORKDIR /app
COPY --from=0 /app .

# node_modules folder is copied to workdir... 

当然,我可以逐个复制文件和文件夹。有没有更好的解决方案?

1 个答案:

答案 0 :(得分:0)

在第一阶段,您不会看到node_modules/,因为docker在将文件发送到守护程序之前已将其忽略,但是在RUN yarn之后,您正在构建一个新的node_modules/,然后将其复制进入第二阶段,并且由于.dockerignore仅在开始构建第一个阶段之前会受到影响,您会在最终图像中看到这一点