文章目录
- 一、前言
- 二、文件准备
- [三、.devcontainer 文件](#三、.devcontainer 文件)
-
- [3.1 Dockerfile](#3.1 Dockerfile)
- [3.2 devcontainer.json](#3.2 devcontainer.json)
- [3.3 容器里面打开工程](#3.3 容器里面打开工程)
- 四、编译下载程序
-
- [4.1 运行esptool 服务端](#4.1 运行esptool 服务端)
- [4.2 vscode 客户端配置](#4.2 vscode 客户端配置)
- [4.3 下载程序](#4.3 下载程序)
- 五、遇到的问题
一、前言
在使用
ESP-IDF
开发ESP32
的时候,环境配置的复杂性和兼容性问题往往是开发者在入门和实践阶段面临的首要挑战。从工具链的安装、Python依赖
的版本协调,到系统路径的配置,这些步骤不仅耗时耗力,还可能因开发机环境的差异而遭遇意外错误。
Docker
技术为这一难题提供了优雅的解决方案------通过容器化封装一个标准、统一、可复现的ESP-IDF
开发环境,使得任何开发者都能在瞬间获得一个开箱即用、与宿主环境隔离且功能完备的构建框架。这不仅极大地简化了项目的启动流程,也为团队协作和持续集成奠定了坚实的基础。本文将详细介绍如何基于
Docker
快速搭建ESP-IDF
开发环境,旨在帮助开发者摆脱环境配置的困扰,将精力专注于更具创造性的应用开发本身。
二、文件准备
-
Docker Desktop 软件
官网自行下载
-
docker 拉取 ESP-IDF镜像
gitdocker pull espressif/idf
-
vscode
-
esptool
Releases · espressif/esptool · GitHub
最好下载最新的兼容性好
如果不行请查看docker 镜像里面的版本号,下载对应的版本
ssh# 查看版本 esptool version
-
vscode 下载Dev Containers插件
三、.devcontainer 文件
在项目文件下面创建一个 .devcontainer 的文件夹
3.1 Dockerfile
在 .devcontainer 文件夹下面创建 Dockerfile 文件
dockerfile
# 定义构建参数 DOCKER_TAG,默认值为 'latest',可在构建时通过 --build-arg 覆盖
ARG DOCKER_TAG=latest
# 基于乐鑫官方 ESP-IDF 镜像构建,版本由 DOCKER_TAG 指定
FROM espressif/idf:${DOCKER_TAG}
# 设置系统语言环境为 UTF-8,确保终端字符编码正确
ENV LC_ALL=C.UTF-8
ENV LANG=C.UTF-8
# 可选:安装 udev 管理设备节点(当前被注释)
# RUN apt-get update -y && apt-get install udev -y
# 将 IDF 环境变量初始化命令添加到 bashrc,启动 shell 时自动加载
RUN echo "source /opt/esp/idf/export.sh > /dev/null 2>&1" >> ~/.bashrc
# 指定容器启动时执行的入口脚本(用于处理设备权限等)
ENTRYPOINT [ "/opt/esp/entrypoint.sh" ]
# 默认容器启动命令:启动 bash shell
CMD ["/bin/bash", "-c"]
3.2 devcontainer.json
在 .devcontainer 文件夹下面创建 devcontainer.json 文件
json
{
"name": "ESP-IDF QEMU", // 开发容器显示名称
"build": {
"dockerfile": "Dockerfile" // 指定构建使用的 Dockerfile
},
"customizations": {
"vscode": {
"settings": {
"terminal.integrated.defaultProfile.linux": "bash", // 设置默认终端为 bash
"idf.espIdfPath": "/opt/esp/idf", // ESP-IDF 框架路径
"idf.toolsPath": "/opt/esp", // IDF 工具链路径
"idf.gitPath": "/usr/bin/git" // 指定 git 执行路径
},
"extensions": [ // 推荐安装的 VSCode 扩展
"espressif.esp-idf-extension", // 乐鑫官方 ESP-IDF 扩展
"espressif.esp-idf-web" // ESP-IDF Web 工具扩展
]
}
},
"runArgs": [ // 容器运行时参数
"--privileged" // 授予特权模式(访问 USB 设备等硬件)
]
}
3.3 容器里面打开工程
使用 ctrl+shift+p
选择Dev Containers: Reopen in Container

四、编译下载程序
4.1 运行esptool 服务端
在宿主主机上面运行 esptool
ssh
.\esp_rfc2217_server.exe -v -p 4000 COM6
COM6
:连接esp32的串口号
4000
: 和 docker通讯的端口号

会提示使用 rfc2217://192.168.1.7:4000?ign_set_control 作为端口号
4.2 vscode 客户端配置
修改.code
->settings.json
文件的串口端口号
json
"idf.port": "rfc2217://192.168.1.7:4000?ign_set_control"

4.3 下载程序


五、遇到的问题
-
vscode 和docker 容器里面的vscode-server版本不兼容
这个问题是因为vscode太老了,esp-idf容器的 ubuntu 是 24.04 的版本,更新vscode,使得和ubuntu的vscode-server一致。