【问题标题】:yarn install linking dependencies is slow every time using docker-compose每次使用 docker-compose 时,yarn install 链接依赖项都很慢
【发布时间】:2019-08-20 16:39:03
【问题描述】:

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

目前,yarn install 在 docker 之外 大约需要 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 上的纱线缓存,或者什么?

我们基本上在docker-compose.yml

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

【问题讨论】:

  • 在某些平台(尤其是 MacOS)上使用这样的卷非常非常慢。我会删除这些volumes:;对于实时开发,在您的主机系统上使用 Node,对于部署前集成测试,运行 docker build 以构建一个包含应用程序及其库依赖项的自包含容器。
  • @DavidMaze 有没有办法让 dev 系统成为 prod 系统的镜像并使其具有同样的性能?

标签: performance docker docker-compose filesystems yarnpkg


【解决方案1】:

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

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

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

希望对某人有所帮助。

编辑 2021/02/26 :

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

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

【讨论】:

    猜你喜欢
    • 2018-11-13
    • 1970-01-01
    • 1970-01-01
    • 2021-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多