VSCode DevContainerを使い始めたメモ
DevContainerとは
DevContainer(Development Container)は、VSCodeの拡張機能を使ってDocker コンテナの中で開発を行う仕組みです。
プロジェクトごとに開発環境をコンテナで定義できるため、以下のメリットがあります。
- チームメンバー間で環境を統一できる
- ホストマシンを汚さない
- プロジェクトを変えるたびに環境を切り替えられる
前提環境
- Docker Desktop(またはDocker Engine)インストール済み
- VSCode インストール済み
- VSCode拡張機能「Dev Containers」インストール済み
基本的な構成
プロジェクトルートに .devcontainer/devcontainer.json を作成します。
{
"name": "my-dev-env",
"image": "mcr.microsoft.com/devcontainers/python:3.11",
"customizations": {
"vscode": {
"extensions": [
"ms-python.python",
"ms-python.black-formatter"
]
}
},
"postCreateCommand": "pip install -r requirements.txt"
}
各項目の説明です。
| キー | 説明 |
|---|---|
name | コンテナの名前 |
image | ベースイメージ |
customizations.vscode.extensions | コンテナ内に自動インストールするVSCode拡張機能 |
postCreateCommand | コンテナ作成後に実行するコマンド |
使い方
- VSCodeでプロジェクトを開く
- コマンドパレット(
Ctrl+Shift+P)を開く Dev Containers: Reopen in Containerを選択- コンテナのビルドが完了するとコンテナ内で開発できる状態になる
ハマったポイント
ベースイメージに入っていないパッケージがある
Microsoftの公式イメージはミニマル構成のため、必要なパッケージが入っていないことがあります。その場合は、独自のDockerfileを用意する方法があります。
Dockerfileを使う場合の例:
FROM mcr.microsoft.com/devcontainers/python:3.11
RUN apt-get update && apt-get install -y \
(必要なパッケージ名)
devcontainer.json 側は image の代わりに dockerfile を指定します。
{
"name": "my-dev-env",
"dockerfile": "Dockerfile"
}
まとめ
DevContainerを使うことで開発環境をコード化でき、ホストマシンを汚さずに済むのが大きなメリットでした。 最初のイメージ選定ができれば、あとはスムーズに使えます。