DevContainer

VS Code で、プロジェクトのディレクトリを WSL で開いて作業する。本番環境の nginx とか PHP のバージョンと合わせるため DevContainer を使うけど、作成するファイル等について。

./.devcontainer
├── Dockerfile
├── compose.yaml
└── devcontainer.json

こんな構成。

.devcontainer/devcontainer.json は以下のような感じ。
name は projectName というかディレクトリ名というか(だいたいディレクトリ名はプロジェクト名になっていると思う)。docker compose を使うので dockerComposeFile を指定しておく。service は dockerComposeFile 内のどの service に接続するかの指定。postCreateCommand で Python の venv を設定している。

{
  "name": "<<<projectName>>>",
  "dockerComposeFile": "compose.yaml",
  "service": "devcontainer",
  "workspaceFolder": "/workspaces/<<<projectName>>>",
  "postCreateCommand": "python3 -m venv .venv && . .venv/bin/activate && python -m pip install --upgrade pip",
  "customizations": {
    "vscode": {
      "extensions": [
        "ms-python.python",
        "ms-python.vscode-pylance",
        "charliermarsh.ruff"
      ],
      "settings": {
        "python.defaultInterpreterPath": "${workspaceFolder}/.venv/bin/python",
        "files.insertFinalNewline": true
      }
    }
  }
}

.devcontainer/compose.yaml は以下のような感じ。
まだ開発用のコンテナ以外は入っていない状態。イメージは Dockerfile でビルドして sleep infinity で常駐させている。/workspaces/jmaxml-collector にホスト側のプロジェクトディレクトリをバインドマウントして working_dir に指定しておく。タイムゾーンは Asia/Tokyo にしておく。

services:
  devcontainer:
    build:
      context: .
      dockerfile: Dockerfile
    command: sleep infinity
    volumes:
      - ..:/workspaces/jmaxml-collector:cached
    environment:
      TZ: Asia/Tokyo
    working_dir: /workspaces/jmaxml-collector
    init: true
    tty: true
    stdin_open: true

.devcontainer/Dockerfile は以下のような感じ。
Ubuntu 22.04 がベースで、タイムゾーンを設定しておく。Python の他に curl, git, jq, less, vim, tree を入れておく。

FROM ubuntu:22.04

ENV DEBIAN_FRONTEND=noninteractive
ENV TZ=Asia/Tokyo

RUN apt-get update \
    && apt-get install -y --no-install-recommends \
        ca-certificates \
        curl \
        git \
        jq \
        less \
        vim \
        tree \
        tzdata \
        python3 \
        python3-venv \
        python3-pip \
        mysql-client \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*

VS Code で Connect to WSL を実行。上記のディレクトリを開いて、Reopen in Container で使える。

コメント

タイトルとURLをコピーしました