Docker容器中的热重新加载在一段时间后停止工作

Docker容器中的热重新加载在一段时间后停止工作,docker,vue.js,docker-compose,dockerfile,hot-reload,Docker,Vue.js,Docker Compose,Dockerfile,Hot Reload,背景 我们使用Docker对Vue.js应用程序进行容器化,并装载带有源代码的卷 Dockerfile FROM node:13.8-alpine RUN yarn install && \ apk add --no-cache git COPY . /usr/src/app WORKDIR /usr/src/app EXPOSE 8080 CMD ['/bin/sh', 'start_compose.sh'] docker-compose.yml version: '

背景

我们使用Docker对Vue.js应用程序进行容器化,并装载带有源代码的卷

Dockerfile

FROM node:13.8-alpine
RUN yarn install && \
    apk add --no-cache git
COPY . /usr/src/app
WORKDIR /usr/src/app
EXPOSE 8080
CMD ['/bin/sh', 'start_compose.sh']
docker-compose.yml

version: '3'
services:
  web:
    build: .
    volumes:
      - .:/usr/src/app:delegated
    ports:
      - '8080:8080'
    command: ['/bin/sh', 'start_compose.sh']
start_compose.sh

yarn install
npm rebuild node-sass
yarn serve
问题

热重新加载通常有效,代码更改通常会立即反映在浏览器中

但通常在一段时间后,热重新加载停止工作,代码更改不会反映在浏览器中

停止并重新启动容器可以暂时解决此问题

问题

什么可能导致此问题?解决方案是什么


谢谢

在某些情况下,这更像是一个节点问题,而不是docker问题。当您停止并重新启动容器时,节点正在重新加载。。。我认为节点重新加载就是重新进行热加载

但也有一些引人注目的方式,“委托”。这可能导致主机卷(在编辑代码时)和容器视图之间不一致。试着用“一致”来改变它


将watchOptions添加到vue.config.js似乎有帮助

vue.config.js

module.exports = {
  devServer: {
    watchOptions: {
      aggregateTimeout: 300,
      poll: 1000,
    },
  },
};

我仍在测试,看看这是否解决了问题。

谢谢您的建议。我使用
委托
来提高绩效,因为我不需要完美的一致性。但您可能是对的,这个问题更多地与Node.js(或者Vue.js或其他东西)有关,而不是与Docker有关。添加
watchOptions
似乎有帮助。