Devcontainerでpythonの実行環境を作る
Devcontainerは便利そうだなと思いつつも手を出していなかったが、pythonのバージョンを色々切り替えて動かさないといけないものがあって不便だったのでDevcontainerに入門した。
構築した環境
python3 + rye + uvの最近流行りの構成。
- rye(pyenvとvenvの代替) https://rye-up.com/
- uv(pipの代替) https://pypi.org/project/uv/
Devcontainer始め方
Devcontaienrに必要なファイルをVSCodeに作ってもらう
- VSCodeの拡張機能のRemote Developmentをインストール
- 開発を行うプロジェクトのフォルダを開く
- ctrl+shift+pでコマンドパレットを開いて、以下の順番に選択
- 実行用のpythonのバージョンはryeで切り替えられるので最新版を選択しておけば良い
- 必要なものはDockerfileやpostCreateCommandでも入れられるので後で追加しても良い
- 暫くすると以下の様にファイルができる
設定をカスタマイズする
以下の状態になるようにファイルを編集、追加します
devcontainer.json
ms-python.pythonの所に事前にインストールしたい拡張機能を記載すればDevcontainer起動時に拡張機能がインストールされた状態で起動します。
手作業で追加するのは大変なので簡単に追加する方法を後で記載します。
// For format details, see https://aka.ms/devcontainer.json. For config options, see the // README at: https://github.com/devcontainers/templates/tree/main/src/python { "name": "Python 3", "build": { "dockerfile": "Dockerfile" }, "customizations": { "vscode": { "extensions": [ "ms-python.python", ] } }, "remoteUser": "vscode", "postCreateCommand": "/bin/bash .devcontainer/postCreateCommand.sh" }
Dockerfile
FROM mcr.microsoft.com/devcontainers/python:1-3.12-bullseye RUN apt-get update \ && apt-get install -y git vim curl bash-completion \ && apt-get clean && rm -rf /var/lib/apt/lists/*
postCreateCommand.sh
ryeとuvを使いたいのでインストールする
#!/bin/bash curl -sSf https://rye-up.com/get | RYE_INSTALL_OPTION="--yes" bash echo 'source "$HOME/.rye/env"' >> ~/.bashrc . "$HOME/.rye/env" rye config --set-bool behavior.use-uv=true mkdir -p ~/.local/share/bash-completion/completions rye self completion > ~/.local/share/bash-completion/completions/rye.bash
Devcontainerを起動する方法
いくつか方法があります。
いちばん簡単なのは現在開いているプロジェクトのフォルダを再度開き直すと、メッセージが出るのでコンテナで再度開くを選択する。
もう一個がコマンドパレット(crtl+shift+p)を開いて、開発コンテナ:コンテナーでリビルドして再度開くを選択
を選んでしばらく待つとDevcontainerで環境が構築されます。