🐶

VScodeを使ってDocker環境で開発したい

2024/08/02に公開

背景

Dockerは、コンテナ技術を利用してアプリケーションを軽量かつ一貫性のある環境で実行するためのツールです。Visual Studio Code(VSCode)は、多くの開発者に愛されている強力なコードエディタです。しかし、Dockerを使って開発している時に、ライブラリがうまく反映されず、リンターエラーが発生しがちです。

ここでは、VSCodeを使ってDocker環境下で効率的に開発する方法について説明します。

前提条件

  • Dockerのインストール
  • VSCodeのインストール

手順

Dev Containers拡張機能をインストール

Dev Containers拡張機能をインストールすると、Dockerコンテナ内でVSCodeを実行し、開発環境を構築することができます。
1.VSCodeを開き、左側の「拡張機能」アイコンをクリックします。
2.検索バーに「Dev Containers」と入力し、Microsoftが提供する「Dev Containers」拡張機能をインストールします。

プロジェクトセットアップ

次に、Dockerを利用してプロジェクトをセットアップします。ここでは、例としてFastAPIのプロジェクトをセットアップします

  1. プロジェクトディレクトリを作成し、移動します。
mkdir my-fastapi-app
cd my-fastapi-app
  1. 必要なファイルを作成します。
touch Dockerfile
touch .dockerignore
touch main.py
touch requirements.txt
  1. Dockerfileを以下のように編集します。
FROM python:3.9

WORKDIR /app

COPY requirements.txt .

RUN pip install --no-cache-dir -r requirements.txt

COPY . .

EXPOSE 8000
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
  1. .dockerignoreファイルに無視するファイルやディレクトリを記述します。
__pycache__
*.pyc
.env
  1. requirements.txtファイルにFastAPIとUvicornの依存関係を記述します。
fastapi
uvicorn
  1. main.pyファイルに簡単なFastAPIアプリケーションを記述します。
from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"Hello": "World"}

Docker Composeでコンテナをビルド&起動

以下のコマンドを実行してDockerコンテナをビルドします。

docker-compose build

Docker Composeを使ってコンテナを起動します。

docker-compose up

Dev Containerの設定

  1. プロジェクトのルートディレクトリに.devcontainerというフォルダを作成し、その中にdevcontainer.jsonファイルを作成します。
mkdir .devcontainer
touch .devcontainer/devcontainer.json
  1. devcontainer.jsonファイルを以下のように編集します。
{
  "name": "FastAPI Development Container",
  "dockerFile": "../Dockerfile",
  "context": "..",
  "appPort": [8000],
  "workspaceFolder": "/app",
  "extensions": [
    "ms-python.python",
    "ms-python.vscode-pylance"
  ],
  "settings": {
    "python.pythonPath": "/usr/local/bin/python"
  }
}

各項目の説明

"name"

開発コンテナの名前を指定します。

"dockerComposeFile"

使用するDocker Composeファイルのパスを指定します。ここでは相対パスでプロジェクトのルートにあるdocker-compose.ymlを指定しています。

"service"

開発環境として使用するサービスの名前を指定します。これは**docker-compose.yml**の中で定義されたサービス名と一致させる必要があります。

"workspaceFolder"

コンテナ内でVS Codeが使用するワークスペースフォルダーを指定します。

"postCreateCommand"

コンテナのセットアップ後に実行されるコマンドを指定します。ここでは、**requirements.txt**からPythonパッケージをインストールしています。

"customizations"

VS Codeのカスタマイズ設定を行います。

  • "vscode": VS Codeに特化したカスタマイズ設定を指定します。
    • "extensions": コンテナ作成時にインストールするVS Code拡張機能のリストを指定します。
    • "settings": VS Codeのユーザー設定を記載します。ここでは、ファイルの自動保存を設定しています。

"extensions"

コンテナ作成時にインストールするVS Code拡張機能を記載します。

"settings"

VS Codeの設定を記載します。ここでは、ファイルのオートセーブを設定しています。

"remoteUser"

コンテナ内で使用するユーザーを指定します。ここでは、Dockerfileで作成した**ubuntu**ユーザーを指定しています。

Dev Containerの起動

プロジェクトがセットアップできたら、VSCodeでDev Containerを起動します。

  1. VSCodeのコマンドパレットを開きます(もしくはCtrl+Shift+P)
  2. 「コンテナで再度開く」を選択します。これで、VSCodeがコンテナ内で再起動し、開発環境がセットアップされます。

コンテナ内に入っていることがわかる!

おわりに

VSCodeを使ってDocker環境でFastAPIを開発する方法を紹介しました。DockerとVSCodeのDev Containersを組み合わせることで、一貫性のある開発環境を提供し、開発プロセスを効率化することができます。ぜひこの手順を参考にして、快適な開発環境を構築してみてください。

株式会社Xronotech

Discussion