清理用户纱线缓存是否会影响docker映像?

时间:2020-05-27 09:00:52

标签: node.js docker dockerfile yarnpkg

在按照以下步骤构建docker映像时

  • 安装依赖项(RUN纱线安装)
  • 生成版本(运行ng build --prod)

如果我在docker文件中使用以下命令从usr位置清理纱线缓存,那么在运行docker映像后会影响吗?

运行rm -rf /usr/local/share/.cache/yarn / *

因为docker映像的大小很大,为1.2 GB,所以我清理了上面的位置,该位置接近450+ MB。

我使用的是较低版本的docker(出于特定原因),该版本不支持多阶段构建。

此外,以上命令是否等效于RUN纱线清洁缓存?

FROM node:10-alpine

WORKDIR /app

COPY . /app

RUN apk --no-cache add yarn \
    && yarn install \
    && ng build --prod \
    && rm -rf /var/cache/apk/* \
    && rm -rf /usr/local/share/.cache/yarn/*

EXPOSE 3000

CMD ["npm", "run", "start"]

1 个答案:

答案 0 :(得分:1)

纱线版本​​1

您可以安全地删除缓存文件,这不会影响您的应用程序。 There's even a dedicated command for that

$ yarn cache clean

纱线版本​​2

但是,使用Plug'n'Play时,清除缓存很可能会破坏您的应用程序,因为相关性不再放在node_modules中。文档说的是这样:

在此安装模式下(现在是从Yarn v2开始的默认设置),Yarn生成单个.pnp.js文件,而不是通常的node_modules。 .pnp.js文件不包含已安装软件包的源代码,而是包含将软件包名称和版本链接到磁盘上某个位置的映射,以及包含将软件包名称和版本与其依赖项集链接的另一个映射。得益于这种高效的系统,Yarn可以告诉Node确切的位置,以查找所需的文件-不管谁要求它们!

磁盘上的位置是缓存。

您可以将旧行为放回.yarnrc.yml文件中。

nodeLinker: node-modules

详细了解即插即用here