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

标签 performance docker docker-compose filesystems yarnpkg

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

现在,yarn install码头外大约需要 10 分钟 来完成,这主要是在Linking Dependencies...中完成的步骤,因为我猜有超过 30k 个对象要链接。后第一yarn install ,只需要 1 秒 去完成。如果我更改一个依赖项,大约需要 10 秒 去完成。所以它比10分钟快得多!

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

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

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

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

services:
  ...
  node:
    image: myimage:latest
    ...
    volumes:
      - ./:/app:cached
      - ./node_modules_docker:/app/node_modules:cached
    working_dir: /app
    ...
  ...

最佳答案

似乎最新的“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),不知何故我再次尝试了非常慢的 yarn 安装。
使用 Docker 2.5.4 (edge) 使事情再次变得更快:
https://github.com/docker/docker.github.io/blob/master/docker-for-mac/edge-release-notes.md

关于performance - 每次使用 docker-compose 时,yarn install 链接依赖项都很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57578110/

相关文章:

python-3.x - Docker容器内部grpc客户端既未收到响应也未收到状态

node.js - Sequelize @6.3.4 无法连接到 docker -> postgres

java - 如何在Docker容器中部署Spring应用程序?

docker - 如何将Gluster卷安装到Docker中的主机文件夹?

docker - 在circleCI上运行docker-container测试

docker - Nix 维持集合的原始顺序

performance - 数组中的随机整数。找出连续子集的最大和

Java:仅在第一次连接到 OracleDriver 时速度很快

ios - 在 Swift 中,当我声明一个非可选属性但不能保证初始化时,我是否会丢失任何资源?

c - 使用 SSE 从 _m128i 寄存器中提取非零值