如何在关闭VS Code文件夹时自动执行Docker相关Shell任务?
实现VS Code关闭文件夹时自动清理Docker资源
VS Code原生任务系统没有直接提供folderClose触发条件,但可以通过以下几种方式实现你要的需求:
1. 借助专用扩展(最简便的方案)
安装Workspace Lifecycle Tasks扩展后,就能在tasks.json里用runOn: "workspaceClose"来触发关闭工作区时的任务。
配置示例
修改你的tasks.json,添加清理Docker资源的任务:
{ "version": "2.0.0", "tasks": [ { "label": "Start Docker", "type": "shell", "runOptions": { "runOn": "folderOpen" }, "osx": { "command": "open -a Docker" }, "problemMatcher": [] }, { "label": "Cleanup Docker Resources", "type": "shell", "runOptions": { "runOn": "workspaceClose" // 该触发条件由扩展提供 }, "osx": { "command": "docker stop $(docker ps -aq) && docker rm $(docker ps -aq) && docker volume prune -f" }, "problemMatcher": [] } ] }
说明:
docker stop $(docker ps -aq):停止所有运行中的容器docker rm $(docker ps -aq):删除所有已停止的容器docker volume prune -f:强制清理未被使用的卷
如果你只需要清理特定容器/卷,把命令改成指定名称即可,比如:docker stop my-app-container && docker rm my-app-container && docker rm my-app-volume
2. 原生手动触发方案(无需扩展)
如果不想安装扩展,可以创建一个手动触发的清理任务,然后在关闭文件夹前手动执行:
在tasks.json中添加:
{ "label": "Cleanup Docker Resources", "type": "shell", "osx": { "command": "docker stop $(docker ps -aq) && docker rm $(docker ps -aq) && docker volume prune -f" }, "problemMatcher": [] }
执行时按Cmd+Shift+B,选择这个任务即可。你也可以给它绑定快捷键,在keybindings.json中添加:
{ "key": "cmd+shift+c", "command": "workbench.action.tasks.runTask", "args": "Cleanup Docker Resources" }
3. 自定义监控脚本(进阶方案)
写一个Shell脚本,在打开文件夹时启动,监控VS Code的工作区进程,当检测到工作区关闭时执行清理命令。不过这种方式需要自己维护脚本,适合有一定Shell基础的用户。
内容的提问来源于stack exchange,提问作者jalv
相关产品推荐
相关产品推荐

