skydum

個人的な作業記録とか備忘録代わりのメモ

最近の流行を取り入れたDevcontainer+Python+rey+uv環境構築

Devcontainerでpythonの実行環境を作る

Devcontainerは便利そうだなと思いつつも手を出していなかったが、pythonのバージョンを色々切り替えて動かさないといけないものがあって不便だったのでDevcontainerに入門した。

構築した環境

python3 + rye + uvの最近流行りの構成。

Devcontainer始め方

Devcontaienrに必要なファイルをVSCodeに作ってもらう

  1. VSCode拡張機能のRemote Developmentをインストール
  2. 開発を行うプロジェクトのフォルダを開く
  3. ctrl+shift+pでコマンドパレットを開いて、以下の順番に選択
  4. 実行用のpythonのバージョンはryeで切り替えられるので最新版を選択しておけば良い
  5. 必要なものはDockerfileやpostCreateCommandでも入れられるので後で追加しても良い
  6. 暫くすると以下の様にファイルができる

設定をカスタマイズする

以下の状態になるようにファイルを編集、追加します

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で環境が構築されます。

devcontainer.json拡張機能を追加する

  1. Devcontainerが起動したら拡張機能の一覧(ctrl+shift+x)を開く
  2. Devcontainerに追加したい拡張を選択して右クリックからdevcontainer.jsonに追加を選択すると良い