【发布时间】:2018-04-19 21:59:44
【问题描述】:
我有一个在 Docker 容器中运行的 Angular 5.2 应用程序,出于开发目的,我使用 Angular CLI 的 ng-serve 来为该应用程序提供服务,该应用程序在更改时提供自动重新加载。我原来的工作服务命令;
ng serve --host 0.0.0.0 --port 80 --disable-host-check
这个功能很好,我可以按预期从主机访问服务的应用程序。
由于各种来源,我添加了--poll 1000 标志,它告诉 CLI 每 1000 毫秒轮询一次文件的更改,否则它永远不会检测到更改,因此永远不会重新编译和更新。我的问题是,在文件被更改和在 docker 容器中检测到触发重建的更改之间,有长达 15-20 秒的延迟。我已经确认文件更改已翻译到容器中,因为我可以cat 编辑的文件立即保存在容器中并查看更改。我可以将轮询超时更改为 1 毫秒,这确实将延迟减少到几秒钟,但这显然并不理想,延迟仍然很长。
为什么会有这样的延迟?
- OSX 版本:10.11.6
- Docker 版本:Docker 版本 18.04.0-ce,构建 3d479c0
- Docker 机器:0.14.0,构建 89b8332
- Docker 编写:1.21.0
// docker-compose.yml
web-client:
build:
context: ../web-client/
dockerfile: ./docker/Dockerfile
ports:
- "80:80"
volumes:
- ../web-client/:/var/www/web-client
container_name: web-client
// Dockerfile
FROM node:9.11
COPY ./ /var/www/web-client
ENTRYPOINT ["/var/www/web-client/docker/entrypoint.sh"]
// entrypoint.sh
#!/usr/bin/env bash
cd /var/www/web-client
yarn run start
// package.json
"scripts": {
...
"start": "ng serve --host 0.0.0.0 --port 80 --poll 1 --disable-host-check",
...
}
【问题讨论】:
-
你是如何在运行时挂载或者你使用了哪个命令的 docker 文件的?您使用哪个操作系统?和docker版本这些东西在回答这个问题之前需要弄清楚
-
@Adiii 我已经添加了版本号以及我认为相关的脚本
-
好的,让我检查一下上面的设置