Docker容器中的热重新加载在一段时间后停止工作
背景 我们使用Docker对Vue.js应用程序进行容器化,并装载带有源代码的卷 DockerfileDocker容器中的热重新加载在一段时间后停止工作,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: '
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
似乎有帮助。