每次使用 docker-compose 时,yarn install 链接依赖项都很慢

ali*_*ien 12 filesystems performance docker docker-compose yarnpkg

我对使用 docker 不是很熟悉,这是将开发环境迁移到 docker 的大型企业应用程序的一部分。

现在,yarn install 在 docker 之外大约需要10 分钟才能完成,这主要是Linking Dependencies...逐步完成的,因为我猜有超过 3 万个对象要链接。在第一个之后yarn install,只需1 秒即可完成。如果我更改一个依赖项,大约需要10 秒才能完成。所以它比10分钟快得多!

但是在 docker 内部,无论依赖项是否改变,每次大约需要5-10 分钟

任何想法为什么会发生这种情况?

我们使用 docker-compose 并有几个不同的进程,其中之一是节点服务器。每当 package.json 更改时,节点服务器都会运行 yarn install,但这种情况相当频繁(每天更新几次)。所以 yarn install 一天运行几次。理想情况下,这将与在 docker 之外运行它一样快,但我不确定从哪里开始寻找。是否有设置或某些东西可以删除每个上的纱线缓存docker-compose restart node,或者什么?

我们基本上有这个docker-compose.yml

services:
  ...
  node:
    image: myimage:latest
    ...
    volumes:
      - ./:/app:cached
      - ./node_modules_docker:/app/node_modules:cached
    working_dir: /app
    ...
  ...
Run Code Online (Sandbox Code Playgroud)

bos*_*sno 6

似乎最新的“Docker Desktop for Mac Edge”版本以某种方式优化了文件的共享方式。

使用最新版本(今天是 2.5.3):https : //docs.docker.com/docker-for-mac/edge-release-notes/

现在,yarn install在 docker 中运行似乎和在我的 mac 上运行一样快。

希望它会帮助某人。

编辑 2021/02/26 :

我让 docker 保持最新(3.x),不知何故我再次尝试了非常慢的纱线安装。

使用 Docker 2.5.4 (edge) 使事情再次变得更快:https : //github.com/docker/docker.github.io/blob/master/docker-for-mac/edge-release-notes.md