当我尝试减小图像的大小时,我使用了多阶段构建。但是有一个问题是它没有从第二张图像中排除文件(.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...
当然,我可以逐个复制文件和文件夹。有没有更好的解决方案?
答案 0 :(得分:0)
在第一阶段,您不会看到node_modules/
,因为docker在将文件发送到守护程序之前已将其忽略,但是在RUN yarn
之后,您正在构建一个新的node_modules/
,然后将其复制进入第二阶段,并且由于.dockerignore
仅在开始构建第一个阶段之前会受到影响,您会在最终图像中看到这一点