构建esp32s3 docker 开发环境

发布于:2025-08-18 ⋅ 阅读:(24) ⋅ 点赞:(0)

一个 开箱即用的 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
  "

使用方法:

  1. 保存脚本并赋予执行权限:
chmod +x esp32_dev.sh
  1. 在项目目录运行:
./esp32_dev.sh
  1. 容器内提示信息会告诉你可用命令:
idf.py build       # 编译
idf.py menuconfig  # 配置
idf.py clean       # 清理
idf.py flash monitor # 刷写 + 监控

优势:

  1. 国内网络加速--network=host + --add-host
  2. 一次构建长期可用:Docker 镜像只构建一次
  3. USB 串口刷写支持--privileged + ESPPORT
  4. 项目目录映射:容器内操作与本地同步
  5. 一条命令启动环境:无需重复记复杂命令

使用方法

  1. 新建docker file
  2. 执行sh 脚本

网站公告

今日签到

点亮在社区的每一天
去签到