VScodeを使ってDocker環境で開発したい
背景
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のプロジェクトをセットアップします
- プロジェクトディレクトリを作成し、移動します。
mkdir my-fastapi-app
cd my-fastapi-app
- 必要なファイルを作成します。
touch Dockerfile
touch .dockerignore
touch main.py
touch requirements.txt
- 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"]
- .dockerignoreファイルに無視するファイルやディレクトリを記述します。
__pycache__
*.pyc
.env
- requirements.txtファイルにFastAPIとUvicornの依存関係を記述します。
fastapi
uvicorn
- 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の設定
- プロジェクトのルートディレクトリに.devcontainerというフォルダを作成し、その中にdevcontainer.jsonファイルを作成します。
mkdir .devcontainer
touch .devcontainer/devcontainer.json
- 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を起動します。
- VSCodeのコマンドパレットを開きます(もしくはCtrl+Shift+P)
- 「コンテナで再度開く」を選択します。これで、VSCodeがコンテナ内で再起動し、開発環境がセットアップされます。
コンテナ内に入っていることがわかる!
おわりに
VSCodeを使ってDocker環境でFastAPIを開発する方法を紹介しました。DockerとVSCodeのDev Containersを組み合わせることで、一貫性のある開発環境を提供し、開発プロセスを効率化することができます。ぜひこの手順を参考にして、快適な開発環境を構築してみてください。
Discussion