【发布时间】: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