VS Codeのdevcontainerでesp-idfの開発環境を作る
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環境を開くまでの手順
- まず、すでにあるesp-idfのプロジェクトのディレクトリまで行き、
.devcontainerディレクトリを作ります
$ cd ~/esp-sample
$ mkdir .devcontainer
.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"]
}
-
.devcontainer/DockerfileのARG DOCKER_TAGはlatestでもいけますが、できれば動くバージョンを入れたほうがいいと思います。 -
esp-idfのプロジェクトのディレクトリをVS Codeで開きます
$ code .
-
F1キーを押して
Dev Containers - Reopen in Containerを選ぶと初回はesp-idfのイメージのダウンロードが行われ、devcontainerで再度VS Codeが開きます。 -
ESP-IDF extensionもインストールされた状態で下記のように表示されます。
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についての情報追記