Site cover image

Site icon imageViserhaut Tech Blog

This blog is a blog that records the daily learning of an infrastructure engineer. It aims to "Viser Haut" or strive for the highest.

WSL2とDevContainersを使用したPipenv環境の構築

概要:

本記事では、Windows 11上でWSL2、Ubuntu、VSCode、Docker Desktop、およびDevContainersを使用してPipenv環境を構築する方法を詳しく解説します。この方法を使用することで、開発者は効率的で再現性の高いPython開発環境を簡単に構築できます。

この記事で伝えたいこと:

  1. DevContainersとPipenvを組み合わせることの利点
  2. 環境構築の具体的な手順
  3. この方法を使用することで得られる開発効率の向上

解決したい課題:

  1. 開発環境の再現性の問題
  2. 異なるプロジェクト間での環境の分離
  3. チーム間での開発環境の統一

課題の原因:

  1. 開発者ごとに異なる環境設定
  2. プロジェクト間の依存関係の競合
  3. 環境構築の複雑さと時間がかかること

課題を解決する技術、手法:

技術、手法の概要:
WSL2、DevContainers、Pipenvを組み合わせて使用することで、以下の利点が得られます:

  1. WSL2:WindowsでLinux環境を利用可能
  2. DevContainers:プロジェクトごとに独立した開発環境を提供
  3. Pipenv:Pythonの依存関係管理を簡素化

技術、手法の効果:

  1. 環境の再現性が向上
  2. プロジェクト間の分離が容易
  3. チーム全体で一貫した開発環境を使用可能

課題がどう解決されるか:

  1. DevContainersにより、プロジェクトごとに独立した環境を作成
  2. Pipenvにより、Pythonの依存関係を効率的に管理
  3. 設定ファイルをバージョン管理することで、チーム全体で同じ環境を共有可能

応用事例のカタログ化:

  1. 複数のPythonバージョンを使用するプロジェクトの管理
  2. 機械学習プロジェクトでの環境構築
  3. マイクロサービスアーキテクチャの開発環境構築

留意点、デメリット:

  1. 初期設定に時間がかかる場合がある
  2. Docker Desktopのインストールが必要
  3. リソース使用量が増加する可能性がある

具体的な手順:

  1. 前提条件の確認:
    • WSL2とUbuntuのインストール
    • VSCodeとRemote - Containers拡張機能のインストール
    • Docker Desktopのインストールと設定
  2. プロジェクトディレクトリの作成:
    • WSL2のUbuntu環境でプロジェクトディレクトリを作成
    • VSCodeでプロジェクトを開く
      cd /usr/local/src/dev/
      mkdir myproject
      cd myproject
      code .
  3. DevContainerの設定:
    • ディレクトリ構成
      (VScode Workspace root)
      ├── .devcontainer/
      │   ├── Dockerfile
      │   ├── devcontainer.json
      │   └── docker-compose.yml
      └── sample.py
    • .devcontainer/devcontainer.jsonファイルの作成と設定
      {
        "name": "Python Dev Container",
        "dockerComposeFile": "docker-compose.yml",
        "service": "workspace",
        "workspaceFolder": "/workspace",
        "customizations": {
          "vscode": {
            "extensions": [
              "ms-python.python"
            ]
          }
        }
      }
    • .devcontainer/Dockerfileの作成と設定
      # Python公式イメージをベースにPython3.13.0-bullseyeを指定
      FROM python:3.13.0-bullseye
      USER root
      
      # 基本的なパッケージとPipenvをインストール
      RUN apt-get update && \
          apt-get -y install vim openssh-client && \
          pip install --upgrade pip && \
          pip install pipenv
      
      # SSHディレクトリを作成
      RUN mkdir -p /root/.ssh && \
      chmod 700 /root/.ssh
      
      # 作業ディレクトリを指定
      WORKDIR /workspace
      
      # .gitignoreに.sshを追加するためのファイルを作成
      RUN echo ".ssh/" >> /workspace/.gitignore
    • .devcontainer/docker-compose.ymlの作成と設定
      version: '3'
      services:
        workspace:
          build:
            context: ..
            dockerfile: .devcontainer/Dockerfile
          environment:
            PYTHONPATH: /workspace
          volumes:
            - ..:/workspace
            - ~/.ssh:/root/.ssh:ro
          command: sleep infinity
  4. DevContainerの起動:
    • VSCodeのコマンドパレットから「Reopen in Container」を選択
    • コンテナのビルドと起動を待つ
  5. Pipenv環境の構築:
    • コンテナ内でPipenvを使用して仮想環境を作成

      pipenv --python 3.13.0-bullseye

    • Pipenv shellを起動して仮想環境にログイン

      pipenv shell

    • Pythonバージョンを確認

      python --version

  6. 開発環境の使用:
    • これで、Dev Container内でPipenvによる仮想環境を構築する手順が完了しました。
    • コンテナ内で必要なPythonパッケージのインストールや開発作業を行うことができます。
  7. 終了と再起動:
    • VSCodeを終了してコンテナを停止
    • 再度作業を行う際は「Reopen in Container」で環境に再接続

この手順を踏むことで、効率的で再現性の高いPython開発環境を構築することができます。

チーム全体で同じ環境を使用することで、「動作しない」といった問題を最小限に抑え、開発効率を向上させることができます。