この章では、 Dev container を使い始める前に概要を説明します。
Dev container とは、誤解を恐れず言うと、 「docker や docker compose コマンドで立ち上げたコンテナに、 VS Code を転送して作業するための仕組み」 です。
ファイル編集やコマンド実行はコンテナ上に転送した VS Code で行い、その結果を見る UI だけがホスト OS 上で動きます。
Dev container では devcontainer.json という設定ファイルを使い、
コンテナ上の開発環境設定をコードとして管理します。
(VS Code の設定やインストールする拡張機能・拡張機能設定など)
単に Docker コンテナを起動するだけでは、エディタ設定やツール構成までは共有できませんが、
devcontainer.json を定義することで、開発環境そのものをチームで再現可能な形で共有できます。

これ以降の作業は、 WSL2 のファイルシステム上に、作業用ディレクトリを作成し、そこで作業を行います。 WSL2 の Ubuntu 24.04 を起動し、次のコマンドで作業用ディレクトリを作成してください。
Windows のファイルシステム上でも実行は可能だが、パフォーマンスが著しく落ちるため、 WSL2 のファイルシステム上で作業するようにしましょう。
今回は、 Spring Boot + PostgreSQL を使った Web アプリケーションの開発環境を構築していきます。
使用するサーバーを列挙すると、次のようになります。
このように、複数サーバーが必要となるので、 Docker Compose による環境設定を行い、それを基に Dev container の環境設定を行っていきます。
AP サーバー兼開発サーバーの dev と、 DB サーバーの postgres をサービスとして定義します。
.devcontainer/compose.yaml に、次の内容を記述してください。
次に、主に「VS Code でどのコンテナに接続し、どんな拡張機能を使うか」を定義していきます。
これで、 Dev container 開発環境を起動する準備ができました。
.devcontainer の格納されているディレクトリに移動し、次のコマンドを実行してください。
Do you trust the authors of the files in this folder? というダイアログが表示されたら、 Yes, I trust the authors をクリックしてください。
VS Code が表示され、左下に WSL: Ubuntu-24.04 と表示されます。
Open Folder in Container と入力Dev Containers: Open Folder in Container... を選択VS Code のウィンドウがリロードされ、左下に Dev Container: Java Dev Container と表示されます。
これで、 Dev container による開発環境の立ち上げが完了しました。
このように、事前にいろいろと作るものはありますが、誰かがつくったものを使うだけであれば、 VS Code を開いてから数手で環境の立ち上げが完了します。
ここから Spring Boot プロジェクトを作って DB へ接続するプロジェクトを作るのは時間がかかりすぎるので、 代わりに app コンテナに PostgreSQL クライアントをインストールし、そこから psql で DB に繋がることを確認します。
VS Code でターミナルを開き、次のコマンドを実行してください。
コンテナ上に psql コマンドがインストールされます。
app コンテナには環境変数が設定されていますので、活用しましょう。
DB に接続できたら OK です。
後は、 Spring Initializr などで Spring Boot プロジェクトを作成し、 .devcontainer と同じディレクトリに格納すれば、 Spring Boot + PostgreSQL のプロジェクトの開発ができます。
開発環境の共有方法は簡単で、プロジェクトのリポジトリ(Git リポジトリなど)に .devcontainer を含めるだけです。
こうすることで、 git clone をしたのち、プロジェクトディレクトリを VS Code + Dev container 拡張機能を使ってで開くだけで共通の開発環境を使用できます。