docker 运行前端服务为什么这么慢

2023-08-09 18:34:59 +08:00
 silk

如题

我 mount 本地的文件夹,然后运行 serve 服务。本机基本两分钟就可以启动,但是 docker 容器二十分钟都起不来,需要设置什么吗? docker run -dt -p 127.0.0.1:3000:3000 --name aaa -w=/app --mount=type=bind,source=$pwd/vue-app/,target=/app -e CHOKIDAR_USEPOLLING=true node 这是运行命令

1437 次点击
所在节点    Docker
7 条回复
qwq11
2023-08-09 18:49:24 +08:00
我没理解错的话,你好像只启动了个 node ?
silk
2023-08-09 19:00:24 +08:00
@qwq11 是的,然后不是开启了终端么
我在里面直接 yarn dev 了.....
YuJianrong
2023-08-09 20:37:05 +08:00
里面大概率是个 webpack ?
webpack 非常吃内存,如果你的 docker 内存分配不高的话就会非常慢甚至启动不起来。
即使内存足了,webpack 需要读取海量文件,这些文件都是 mount 过去的,不同的 OS 读取性能不一样,Mac 的话读取性能很低,即使内存解决了我估计也不会短于 10 分钟。
要快一点可以不用 mount 而是整个文件夹 copy 进去(或者在 build docker image 的时候把 node_modules 装进去),估计能快一丢丢。
yinmin
2023-08-09 20:37:10 +08:00
改成这个试试:

docker run -dt -p 127.0.0.1:3000:3000 --name aaa -w /app -v $(pwd)/vue-app/:/app -e CHOKIDAR_USEPOLLING=true node
yinmin
2023-08-09 22:13:35 +08:00
如果你使用 docker for windows ,文件是放在 windows 的 NTFS 磁盘上然后 mount 到 docker 里,docker -> 底层 linux 虚拟机 -> windows 系统 -> 读 NTFS 上的文件,这么一圈下来是很慢的。需要写 dockerfile 将文件复制到容器里去运行。
Vegetable
2023-08-09 22:17:07 +08:00
你至少不要使用挂载的 node_modules ,否则 serve 这一套下来 IO 吃不消
silk
2023-08-10 14:13:00 +08:00
@yinmin 明白了,谢谢谢谢。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/963840

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX