如何禁用Visual Studio Code自动端口转发?问题求助
问题
简述
当Coder CLI在devcontainer内通过xdg-open尝试打开工作区时,Visual Studio Code会拦截该调用并自动转发到错误端口。
项目结构
devcontainer通过Docker Compose构建,配置如下:
docker-compose: devcontainer: ports: - "8080:8080" coder: ports: - "7080:7080"
开发者通过安装在devcontainer内的Coder CLI与Coder服务交互。
问题详情
运行Coder CLI命令打开工作区时,本应访问localhost:7080/some-workspace,但Visual Studio Code的自动端口转发功能会拦截并执行以下操作:
- 检测到7080端口已被Coder服务占用
- 自动转发到下一个可用端口(7081)
- 浏览器被导向localhost:7081/some-workspace
- 由于7081端口无监听服务,导致连接失败
在默认设置下,该行为可在Visual Studio Code的ports标签页中看到。

令人沮丧的是,即使禁用所有自动转发设置,Visual Studio Code仍会自动创建端口转发,只是标签变为"user forwarded":

所有配置尝试均未能阻止该行为。
配置尝试
尝试1:在devcontainer.json文件中添加
"forwardPorts": [], "portsAttributes": { "*": { "onAutoForward": "ignore" } }
尝试2:在settings.json文件中添加
"remote.autoForwardPorts": false, "remote.restoreForwardedPorts": false, "remote.otherPortsAttributes": { "onAutoForward": "ignore" }
尝试3:在devcontainer.json的customizations下添加
"customizations": { "vscode": { "settings": { "remote.autoForwardPorts": false } } }
尝试4:使用socat中继流量
在devcontainer内使用socat将转发的"localhost:7081"流量中继到"coder:7080",仅部分生效,无法支持Coder全部功能。
环境信息
devcontainer通过WSL运行在Windows机器上:
- Windows版本10.0.22631 Build 22631
- WSL版本2.7.0.0
- WSL镜像:Ubuntu 24.04.3 LTS
- Visual Studio Code版本1.107.1
- Docker版本29.1.2
求助问题
- 是否存在正确的配置方式?
- 这是否是需要修复的Bug?
- 是否可通过变更使用方式彻底避免该问题?
内容的提问来源于stack exchange,提问作者user32172150
相关产品推荐
相关产品推荐

