/

VS Codeのdevcontainerでesp-idfの開発環境を作る

reopen
reopen container in VS Code

VS Codeのdevcontainerを使い、esp-idfの開発環境を作ります。

Windowsで開発環境を作るのが大変だったのでUbuntuで再度開発環境を作ろうとしたら、esp-idfが無いとかpythonがないとかのエラーが出まくりました。

WindowsだろうがLinuxだろうが、開発環境を作るのが非常に大変なのでdevcontainerで作ることにしました。

下記が環境および必要スペックです。

  • Linux(Ubuntuを想定)
  • Dockerがインストール済み
  • VS Codeがインストール済み
  • すでにesp-idfのプロジェクトがある(~/esp-sampleというディレクトリにあると仮定して話を進めます)

devcontainerでesp-idf環境を開くまでの手順

  1. まず、すでにあるesp-idfのプロジェクトのディレクトリまで行き、.devcontainerディレクトリを作ります
$ cd ~/esp-sample
$ mkdir .devcontainer
  1. .devcontainerディレクトリに下記ファイルを作ります Dockerfile
ARG DOCKER_TAG=release-v5.2
FROM espressif/idf:${DOCKER_TAG}

ENV LC_ALL=C.UTF-8
ENV LANG=C.UTF-8

RUN apt-get update -y && apt-get install udev -y

RUN echo "source /opt/esp/idf/export.sh > /dev/null 2>&1" >> ~/.bashrc

ENTRYPOINT [ "/opt/esp/entrypoint.sh" ]

CMD ["/bin/bash", "-c"]

devcontainer.json

{
  "name": "ESP-IDF QEMU",
  "build": {
    "dockerfile": "Dockerfile"
  },
  "customizations": {
    "vscode": {
      "settings": {
        "terminal.integrated.defaultProfile.linux": "bash",
        "idf.espIdfPath": "/opt/esp/idf",
        "idf.toolsPath": "/opt/esp",
        "idf.gitPath": "/usr/bin/git"
      },
      "extensions": [
        "espressif.esp-idf-extension",
        "espressif.esp-idf-web"
      ]
    }
  },
  "runArgs": ["--privileged"]
}
  1. .devcontainer/DockerfileARG DOCKER_TAGlatestでもいけますが、できれば動くバージョンを入れたほうがいいと思います。

  2. esp-idfのプロジェクトのディレクトリをVS Codeで開きます

$ code .
  1. F1キーを押してDev Containers - Reopen in Containerを選ぶと初回はesp-idfのイメージのダウンロードが行われ、devcontainerで再度VS Codeが開きます。

  2. ESP-IDF extensionもインストールされた状態で下記のように表示されます。

    ESP-IDF
    ESP-IDF extension

これでESP-IDF開発環境がdevcontainer内に出来上がります。構築後は4からの手順ですぐに開発環境が起動できます。

なお、Flash時にポートを選べます、私の環境ではdevcontainer内からホスト側のUSBデバイスが全部見られるようになっていました。

M5StackのAtomS3UにFlashする際はポートはttyACM0で書き出せました。

また、USBの認識がされない場合はUSBを挿しっぱなしにした状態でいったんVS Codeを閉じて再度プロジェクトを開き、それからDev Containers - Reopen in Containerをやると認識すると思います。

参考

なお、下記は公式のWindows(WSL)での構築方法になります。

  • https://docs.espressif.com/projects/vscode-esp-idf-extension/en/latest/additionalfeatures/docker-container.html

更新履歴

  • 2025/12/13 USBについての情報追記