WebStorm每次运行/调试时重建Docker容器的原因及关闭方法
问题场景
使用WebStorm调试/运行基于NestJS的Node.js Docker容器代码时,每次通过IDE UI启动都会触发容器重建,日志显示:
node --require /tmp/99c34ee7-cb98-459c-80ae-2373b43a93dd/jest-intellij/lib/jest-intellij-stdin-fix.js /tmp/51fa3cc9-f4c8-4094-8194-f5b536771256/nest_app/node_modules/jest/bin/jest.js --colors --reporters /tmp/99c34ee7-cb98-459c-80ae-2373b43a93dd/jest-intellij/lib/jest-intellij-reporter.js --verbose --testNamePattern=^AppController (e2e) / (GET)$ --runTestsByPath /tmp/51fa3cc9-f4c8-4094-8194-f5b536771256/nest_app/test/app.e2e-spec.ts
Container nodejs_docker_test-nodejs_test-1 Recreate
Container nodejs_docker_test-nodejs_test-1 Recreated
Attaching to nodejs_docker_test-nodejs_test-1
nodejs_docker_test-nodejs_test-1 | nodejs_docker_test-nodejs_test-1 | nodejs_docker_test-nodejs_test-1 | nodejs_docker_test-nodejs_test-1 | nodejs_docker_test-nodejs_test-1 | nodejs_docker_test-nodejs_test-1 | nodejs_docker_test-nodejs_test-1 | nodejs_docker_test-nodejs_test-1 | nodejs_docker_test-nodejs_test-1 | nodejs_docker_test-nodejs_test-1 |
尝试调整运行/调试配置未解决,希望关闭该重建行为以节省时间或保留容器修改后的状态。
原因分析
WebStorm默认会在每次启动Docker相关的运行/调试任务时重建容器,核心目的是:
- 确保每次运行都基于干净的环境,避免容器内残留的文件、进程状态影响测试或调试结果
- 自动同步本地代码到容器内(如果配置了卷映射),保证容器内代码与本地一致
关闭重建的具体步骤
1. 修改单个运行/调试配置
打开对应的运行/调试配置(点击右上角运行按钮旁的下拉菜单 → 编辑配置):
- 找到对应Docker或**Node.js(Docker)**类型的配置项
- 切换到Docker标签页,定位到Container settings区域
- 取消勾选Recreate container(部分版本显示为Always recreate container)选项
2. 针对Docker Compose配置调整
如果是通过Docker Compose启动容器:
- 在运行/调试配置的Docker Compose标签页中,将默认的
Command从up修改为up --no-recreate - 或者在Additional options输入框中添加
--no-recreate参数
3. 验证效果
保存配置后重新启动调试/运行任务,查看日志是否不再出现Recreate、Recreated字样,确认容器直接复用现有实例。
注意事项
- 关闭重建后容器状态会被保留,若需要干净环境,可手动执行
docker-compose down或docker rm <容器名>命令清理 - 若本地代码有修改,需确保卷映射配置正确,保证容器能同步最新代码;未配置卷映射的场景,仍需手动重建容器或重启服务加载新代码
内容的提问来源于stack exchange,提问作者mrnavrc

