我有一个在Docker容器中运行的Angular 5.2应用程序,出于开发目的,我使用Angular CLI ng-serve来提供应用程序,该应用程序提供对更改的自动重新加载.我最初的工作服务命令;
ng serve --host 0.0.0.0 --port 80 --disable-host-check
这个功能很好,我可以按照预期从主机访问服务的应用程序.
对于上述情况,由于各种来源,我添加了--poll 1000标志,它告诉CLI每1000ms轮询一次文件的更改,如果没有它,它永远不会检测到更改,因此永远不会重新编译和更新.我的问题是在正在更改的文件和触发重建的docker容器中检测到的更改之间,存在最多15-20秒的延迟.我已确认文件更改已转换为容器,因为我可以cat立即保存在容器中的已编辑文件并查看更改.我可以将轮询超时更改为1毫秒,这确实将延迟减少到几秒钟,但这显然不理想,延迟仍然很大.
为什么会出现这种延迟?
// 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",
...
}
Run Code Online (Sandbox Code Playgroud)
这是我的设置相当快,
docker compose,对外暴露4200端口,挂载src文件夹来检测变化:
version: '2'
services:
web:
container_name: my-spa-dev
build:
context: ./
dockerfile: Dockerfile.test
ports:
- "4200:4200"
volumes:
- ./src:/usr/src/app/src
Run Code Online (Sandbox Code Playgroud)
Dockerfile.测试:
FROM node:10
WORKDIR /usr/src/app
COPY package.json ./
COPY yarn.lock ./
RUN yarn install
COPY . .
CMD ["yarn", "start"]
Run Code Online (Sandbox Code Playgroud)
运行与docker-compose -f docker-compose.dev.yml up
| 归档时间: |
|
| 查看次数: |
1589 次 |
| 最近记录: |