本帖最后由 cnk700i 于 2019-9-10 21:14 编辑
备注
- 拷贝自博客,排版格式随缘,如有问题可看原文。。。
- 不设置隐藏了,觉得有用帮忙顶一下让更多人看到~
正文
上次使用VS Code在WSL下实现了Home Assistant代码的调试,对Visual Studio Code的远程调试功能有了一定的了解,现在再回头看一开始就折腾的Docker远程调试,很多问题迎刃而解。 0.环境- Win10 + Docker Desktop 2.1.0.1
- Ubuntu 18.04 + Docker CE 19.03.1
- Visual Studio Code 1.38.0
INFO:Windows需要Docker Desktop相关的工具提供支持。
1.方法简介Docker容器环境开发调试,需要一台Linux主机提供容器,本地Windows使用VS Code远程到容器环境运行代码。与使用WSL开发调试相比,有一个好处就是代码在Linux主机上,可以在不同的终端主机通过VS Code远程登录开发调试。不过缺点就是本地代码是没法直接和远程环境同步,不像WSL所加载的代码目录在Windows上是可以直接访问修改的。
使用Docker容器环境开发调试,可以根据项目工程的devcontainer.json文件实现镜像构建、插件安装、运行参数设定等一系列过程实现自动部署容器开发环境;也可以将代码加载到已有的容器中去运行。前一种由于本人理解有限加上上手较难,有兴趣可以观看VS Code文档结合HA代码工程(Github上的项目带有配置文件)实践部署。这里只介绍后一种方法,目标是以最简单的方法实现调试Home Assistant代码。 2.Linuxdocker安装过程省略。 开启Docker开启远程访问。 复制1
| vi /lib/systemd/system/docker.service
|
复制1
2
3
4
| # /lib/systemd/system/docker.service 文件
# 修改ExecStart行
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
#
|
WARN:这里的端口号不是自定义端口,只能用2375或2376,另外2375是不加密不验证的端口,有安全方面的要求请启用2376端口并进行相应设置,具体方法自行搜索。
创建测试环境容器,用使用官方的镜像即可,根据需要调整版本号。 复制1
2
| docker pull homeassistant/home-assistant:0.98.0
docker run -it --name demo -p 8456:8123 homeassistant/home-assistant:0.98.0 /bin/sh -c "while sleep 1000; do :; done"
|
INFO:也可以不设置端口映射,VS Code提供Remote-Containers: Forward Port from Container功能,分配到端口后可以在Windows通过localhost:[转发端口]访问。
2.WindowsDocker Desktop安装过程省略。 - VS Code安装Docker插件、RemoteDevelopment插件。
配置docker连接信息。 连接容器,将会新建远程窗口,有两种方法。
- 方法1:远程资源管理器中,选择容器->”Connect to Container”
- 方法2:Docker插件中,容器窗->容器右键->”Attach Visual Studio Code”
- 新窗口成功连接容器(左下角有变化)
- 在容器中安装Python插件,代码调试需要。
准备代码目录。
3.调试在远程窗口(连接到容器)下,菜单栏->调试->启动调试(快捷键F5)开始运行调试。如下图,可以看到能够正常追踪HA主程序断点以及自定义组件代码断点。 - 启动过程断点
- 正常运行自定义插件断点
- 网页调用服务触发断点
4.其它 5.小结- 远程调试不需要本地安装python运行环境,代码解析由远端的python运行;远程调试模式下远端会安装有VS Code服务程序,本地VS Code作为操作界面实现交互。
- 得益于官方HA镜像的主程序代码没有在python安装目录,不需要另外下载代码包。另外不同版本的代码文件可以直接docker pull下来,初步使用下来比用WSL部署更方便。
|