必须启用docker插件并重启webstorm,否则services无docker节点、run配置无docker选项;连接需匹配实际环境(如colima路径或tcp地址);私有镜像须在ide内单独配置registry;macos/windows需提前配置路径映射白名单。

Docker 插件没启用,后面所有操作都白搭。 WebStorm 自带 Docker 插件,但默认可能被手动禁用——这是 80% 连接失败的起点。插件一关,Services 窗口里压根不显示 Docker 节点,Run 配置里也找不到 Dockerfile 或 Compose 选项。
确认 Docker 插件已启用并重启 IDE
打开 Ctrl+Alt+S → Plugins → 切到 Installed 标签页 → 搜索 Docker → 确保复选框已勾选(哪怕显示 “Bundled”)→ 必须重启 WebStorm。
常见错误现象:
-
View → Tool Windows → Services里没有 Docker 图标 - 右键 Dockerfile 或项目根目录,没有
Run Dockerfile或Docker相关菜单
别急着配 socket、拉镜像,先过这一关。
连接 Docker daemon 失败?重点查 socket 路径或 TCP 地址
WebStorm 默认尝试连 Docker Desktop 的本地 socket,但你用的是 Colima、Rancher Desktop、WSL2 或远程 dockerd,地址就完全不对。
进入 Ctrl+Alt+S → Build, Execution, Deployment → Docker → 点击 + 添加配置:
- macOS + Colima:类型选
TCP socket,路径填unix:///Users/xxx/.colima/docker.sock(不是/var/run/docker.sock) - Windows + WSL2:类型选
WSL2-based engine,确保 WSL 里dockerd已启动,不要强行填 TCP - 远程开发机:类型选
TCP socket,填tcp://192.168.x.x:2375,且远端必须已加-H tcp://0.0.0.0:2375启动,并放行防火墙
对话框底部出现 Connection successful 才算真正通了。没这行字,别往下走。
拉私有镜像报 “no basic auth credentials”?IDE 不复用 CLI 登录态
WebStorm 不会自动读取你终端里 docker login 存的凭据,必须在 IDE 内单独配置 registry。
操作路径:Alt+8 打开 Services → 右键 Docker 节点 → Docker Registry…:
- Docker Hub:类型选
Docker Hub,账号填Docker ID(不是邮箱),密码填对应密码 - 公司私有 registry(如
registry.example.com):类型选Other,URL 填完整地址(含https://),勾选Use HTTPS
配置完后,展开 Images 节点,才能看到对应 registry 下的镜像列表。直接在 Run 配置里写 my-privaterepo/app:latest 却没配 registry?必然失败。
从 Dockerfile 启动容器,改代码不生效?默认不挂载源码
点击 Run Dockerfile 只做两件事:docker build → docker run 新容器。它不会把本地代码实时同步进正在运行的容器。
要实现“改保存即生效”,必须手动加 volume 挂载:
- 右键 Dockerfile →
Edit Configurations…→ 展开Container settings→Volume bindings→ 添加映射,例如:
本地路径:./src→ 容器路径:/app/src - 注意权限问题:Linux/macOS 宿主机 UID 和容器内 UID 不一致时,可能无写入权限;可在
Environment variables加NODE_OPTIONS=--no-warnings,或在User字段指定1001:1001
调试 Node.js 时卡在 Cannot connect to runtime process?说明远程解释器没指向容器内环境,而只是起了个空容器——这不是连接问题,是运行时配置错位。
最容易被忽略的其实是路径映射白名单:macOS/Windows 上,Docker 运行在虚拟机里,WebStorm 只能挂载你明确在 Build, Execution, Deployment → Docker → Path mappings 里声明过的本地路径。没加白名单的目录,哪怕写进 Volume bindings,也会静默失败。











