当我尝试减小图像的大小时,我使用了多阶段构建。但是有一个问题是它没有从第二个镜像中排除文件(即.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...
当然可以一个一个地复制文件和文件夹。但是否有更好的解决方案呢?
RUN rm -rf file
命令删除所有不必要的文件。您想要删除哪些文件?您想在容器中运行什么命令? - maiermicRUN rm -rf file.
无法将之前的层移出图像。 - Yingray Luyarn install
或npm install
获取所有依赖项,然后进行代码构建。在最后阶段,我尝试使用npm install --production
但没有起作用。 - Yingray LuRUN yarn
之后使用RUN rm -rf file
,那么图像大小确实不会减小。我是指RUN yarn && rm -rf file
。你可以安装所有依赖项(包括 dev),构建你的应用程序(我想是yarn run build
),删除所有依赖项,从缓存中安装生产依赖项并删除缓存文件:RUN yarn && yarn run build && rm -rf node_modules && yarn --production && yarn cache clean
。 - maiermic