開発コンテナしたい(devcontainer

devcontainer(Dev Container)はVS Codeからコンテナ環境に接続し、 ローカル環境と同じように開発できる機能です。 バックエンドにDockerを利用します。

プロジェクトごとの設定は .devcontainer/devcontainer.jsonに記述し、 開発メンバーで共有できます。

コンテナレジストリ

レジストリ名

提供元

ホスト名

Docker Hub

Docker

docker.io

GitHub Container Registry

GitHub

ghcr.io

Microsoft Container Registry

Microsoft

mcr.microsoft.com

コンテナレジストリの一覧を作ってみました。 この他にもAWSやGoogle Cloudがホストしているレジストリもあります。

Python環境したい

test-devcontainer-python
|-- .devcontainer/devcontainer.json
|-- requirements.txt

Python環境を構築するときのディレクトリ構造の例です。 プロジェクトのルートにパッケージの依存関係を記述したrequirements.txtを作成します。

{
    "name": "Python Dev Container",
    "image": "mcr.microsoft.com/devcontainers/python:3.11",
    "features": {
        "ghcr.io/devcontainers/features/python:1": {}
    },
    "postCreateCommand": "pip install -r requirements.txt",
    "customizations": {
        "vscode": {
            "extensions": [
                "ms-python.python",
                "ms-python.vscode-pylance"
            ]
        }
    }
}

Python3.11環境を構築するための.devcontainer/devcontainer.jsonの設定例です。 それぞれの設定キーは以下の通りです。

name

開発コンテナの名前です。VS CodeのUIで表示されます(Dockerのコンテナ名ではありません)。

image

使用するコンテナイメージです。 ここではMicrosoftのコンテナレジストリを指定していますが、 Docker Hubなど他のコンテナレジストリにあるイメージも指定できます。

features

プロジェクトに追加したい機能を指定します。

postCreateCommand

開発コンテナを作成したあとに実行するコマンドを設定します。 ここではpip install -r requirements.txtしています。

customizations

VS Codeの拡張機能を指定しています。 ここではPython拡張とPylance拡張を追加しています。