Visual Studio Code在WSL或容器远程调试,需要在本地安装相应的WSL或者Docker Desktop,如需要尽量保持本地环境的简洁,采用SSH方式是一个更好的选择。
0.环境
- Win10 + OpenSSH
- Ubuntu 18.04 + Docker CE 19.03.1
- Visual Studio Code 1.38.0
1.方法简介
SSH方式通过远程到Linux主机上,使用Linux主机环境实现代码调试,实际上VS Code官方文档已有很完整教程,有疑问可以多翻翻。为了隔离测试环境,在此使用容器部署Linux环境。
2.准备
2.1.Windows
- 安装OpenSSH客户端,Win10 1809 和 Windows Server 2019后系统默认安装好,其它版本下载Win32-OpenSSH解压后加入PATH环境变量即可,或看官方教程安装。
- 创建SSH钥匙对,会提示保存目录直接回车确认即可。
1
ssh-keygen -t rsa -b 4096
- 将
%USERPROFILE%\.ssh\
目录下生成的id_rsa.pub(公匙)复制出来,将id_rsa(私匙)更名为id_rsa-hass-dev。自定义名称
更名的目的是作为专用的钥匙。
2.2.Linux
下载Dockerfile,将上一步骤的id_rsa.pub放进同一个目录,然后上传至Docker宿主机。
进入Dockerfile文件所在目录,构建镜像。
1
2
3cd hass-dev
# PIP_SOURCE指定pip源,HA_VERSION指定版本号
docker build -t hass-dev:0.98.0 --build-arg PIP_SOURCE="http://mirrors.aliyun.com/pypi/simple/" --build-arg HA_VERSION="0.98.0" .pip源参数
PIP_SOURCE用阿里的速度比较快,但可能会缺少比较新的包导致build失败,这时候使用源(https://pypi.Python.org/simple/)。
启动容器。
1
docker run -d -v ~/hass-dev-config:/usr/src/homeassistant/config -p 8022:22 -p 8456:8123 hass-dev:0.98.0
配置说明
-v把配置目录映射出来方便备份;-p需要映射容器22端口供VS Code连接,映射HA的8123端口访问测试(也可以不设置,VS Code提映射设置可到本地访问)。
3.VS Code操作
- 配置SSH连接信息。
1
2
3
4
5Host hass-dev # 主机名,自定义
User root # 登录用户,不需要改动
HostName 192.168.1.10 # 宿主机IP,根据实际调整
IdentityFile ~/.ssh/id_rsa-hass-dev # 本地私钥文件
Port 8022 # 容器映射的端口,根据实际调整注意
配置文件中的注释信息要删掉。
- 连接远程主机(容器)。
- 在远程主机(容器)上安装Python插件,代码调试需要。
- 打开主目录,开始调试。
4.小结
- 官方的HA镜像貌似没有给Dockerfile,只得自己写,顺便精简了一些文件。
- VS Code的三种远程调试方法整体上操作流程都一样,难点都是远程主机环境的搭建。