一个 开箱即用的 ESP32-S3 开发 Dockerfile
特点:
- 基于官方 ESP-IDF 镜像
- 国内网络加速(pip 和 apt)
- 常用开发工具预装(vim、nano、git、curl 等)
- 支持刷写固件(USB 映射和权限)
- 容器启动即进入开发环境
# Dockerfile - ESP32-S3 开发环境 (开箱即用)
FROM espressif/idf:latest
# 设置工作目录
WORKDIR /project
# 设置默认目标芯片
ENV IDF_TARGET=esp32s3
# 安装常用开发工具和国内 apt 镜像
RUN sed -i 's|http://archive.ubuntu.com/ubuntu/|http://mirrors.tuna.tsinghua.edu.cn/ubuntu/|g' /etc/apt/sources.list && \
apt-get update && \
apt-get install -y --no-install-recommends \
git \
curl \
wget \
vim \
nano \
python3-pip \
&& rm -rf /var/lib/apt/lists/*
# 配置 Python pip 国内镜像源,加速 Python 工具下载
RUN python3 -m pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
# 安装 ESP-IDF Python 工具依赖
RUN python3 -m pip install --upgrade pip setuptools wheel
# 可选:安装额外工具,例如 esptool
RUN python3 -m pip install esptool
# 设置默认启动命令为 bash
CMD ["/bin/bash"]
构建镜像
在 Dockerfile 所在目录执行:
docker build -t esp32s3_dev:latest .
运行容器(开发模式,不刷写)
docker run --rm -it \
-v $PWD:/project \
-w /project \
--network=host \
esp32s3_dev:latest
进入容器后可执行:
idf.py build # 编译
idf.py clean # 清理
idf.py menuconfig # 配置
运行容器(刷写固件)
docker run --rm -it \
-v $PWD:/project \
-w /project \
-e ESPPORT=/dev/ttyUSB0 \
--privileged \
--network=host \
esp32s3_dev:latest
进入容器后执行:
idf.py flash monitor
✅ 特点总结:
- 国内网络加速:apt 和 pip 都用国内镜像
- 开箱即用:Python 工具链、esptool、常用编辑器预装
- USB 支持:刷写固件无需额外配置
- 项目目录映射:容器内操作与本地同步
一条命令就能启动 ESP32-S3 开发环境、支持编译、刷写、监控的完整脚本
适合长期在 Ubuntu 国内网络开发。
保存为 esp32_dev.sh
:
#!/bin/bash
# esp32_dev.sh - 一条命令管理 ESP32-S3 开发容器
# 配置
PROJECT_DIR=$(pwd) # 当前目录作为项目目录
CONTAINER_NAME=esp32s3_dev # 容器名字
ESP_PORT=/dev/ttyUSB0 # ESP32-S3 串口设备
IDF_TARGET=esp32s3
IMAGE=esp32s3_dev:latest # 上面构建的 Docker 镜像名字
# 检查镜像是否存在,不存在则构建
if [[ "$(docker images -q $IMAGE 2> /dev/null)" == "" ]]; then
echo "Docker 镜像 $IMAGE 不存在,开始构建..."
docker build -t $IMAGE .
fi
# 启动开发容器
docker run --rm -it \
--name $CONTAINER_NAME \
-v $PROJECT_DIR:/project \
-w /project \
-e IDF_TARGET=$IDF_TARGET \
-e ESPPORT=$ESP_PORT \
--privileged \
--network=host \
--add-host=hub.docker.com:140.82.114.4 \
$IMAGE \
/bin/bash -c "
echo '欢迎进入 ESP32-S3 Docker 开发环境';
echo '编译: idf.py build';
echo '配置: idf.py menuconfig';
echo '清理: idf.py clean';
echo '刷写: idf.py flash monitor';
exec bash
"
使用方法:
- 保存脚本并赋予执行权限:
chmod +x esp32_dev.sh
- 在项目目录运行:
./esp32_dev.sh
- 容器内提示信息会告诉你可用命令:
idf.py build # 编译
idf.py menuconfig # 配置
idf.py clean # 清理
idf.py flash monitor # 刷写 + 监控
优势:
- 国内网络加速:
--network=host
+--add-host
- 一次构建长期可用:Docker 镜像只构建一次
- USB 串口刷写支持:
--privileged
+ESPPORT
- 项目目录映射:容器内操作与本地同步
- 一条命令启动环境:无需重复记复杂命令
使用方法
- 新建docker file
- 执行sh 脚本