Node应用语法错误后Docker镜像无法重启,需重建镜像求助
问题:Docker Compose Watch 处理Node.js语法错误后容器无法正常重启
我在Docker容器中运行Node.js应用,使用docker compose watch实现代码修改时的热重载,正常情况下该功能可用。但当代码出现语法错误导致Node.js镜像终止后,即使修正语法错误并尝试重启镜像,容器仍会崩溃,日志显示还是最初的语法错误。目前唯一解决方法是执行docker compose build重建镜像,之后关闭容器再重新运行docker compose watch。我暂时用nodemon作为替代方案监听代码变更。
我的compose.yaml配置如下:
services: server: build: context: . environment: NODE_ENV: develop ports: - 3000:3000 develop: watch: - action: sync+restart path: ./ target: /usr/src/app/ ignore: - node_modules/
后续尝试与问题
尝试在compose.yaml中同时使用绑定挂载和watch配置时,发现两者目标路径不能重叠,运行docker compose watch时出现错误:
Htar: can't remove old file usr/src/app/node-app-1.js: Permission denied
WARN[0011] Error handling changed files for service server: 1 error occurred:
最终解决方案
目前我已不再使用docker compose watch,转而在Dockerfile和compose.yml中配置执行npm run start/dev,该方案可满足热重载需求。
内容的提问来源于stack exchange,提问作者ukmasa
相关产品推荐
相关产品推荐

