WSL(Ubuntu)環境上でSpringプロジェクトコンテナを効率的にテンプレート化
始めに
Springプロジェクトの開発において、環境構築からコンテナ化までのプロセスは、しばしば時間と手間がかかります。この一連の流れを効率化するために、Dockerfileを用いてSpringプロジェクトをコンテナ化するテンプレートを作成しました。この記事では、そのプロセスとテンプレートの作成方法を残します。
フォルダ構成の詳細
私たちのプロジェクトは、Maven, Spring, そしてMyBatisを使用しており、RESTfulなAPIを実装しています。フォルダ構成は以下の通りです:
.
├── (Mavan + Spingプロジェクト)
│ ├── src/main
│ │ ├── java/com/example/myapp
│ │ │ ├── controller
│ │ │ │ └── UserController.java
│ │ │ ├── dao
│ │ │ │ └── UserMapper.java
│ │ │ ├── entity
│ │ │ │ └── User.java
│ │ │ ├── servie
│ │ │ │ └── UserService.java
│ │ │ └── MyAppApplication.java
│ │ └── resources
│ │ ├── mappers
│ │ ├── └── UserMapper.xml
│ │ ├── application.properties # MySQLの設定とDBコンテナの設定を一致させてください
│ │ ├── schema.sql
│ │ └── data.sql
│ ├── Dockerfile.dev # 開発環境用Dockerfile
│ ├── Dockerfile.prod # 実行環境用Dockerfile
│ └── pom.xml
└── cocker-compose.yml # このディレクトリでdocker-composeコマンド実行します
この構成は、開発から本番環境への移行をスムーズに行うためのものです。
コンテナ構築前のプロジェクト結果
本格的な実装を始める前にシンプルなユーザーテーブルを作成し、データをJSON形式で返す処理を実装しました。これをコンテナ化後も実行できるようにします。
Linux環境のセットアップ
開発環境は、Windows 10上のWSL2にUbuntuをインストールし、Docker Desktop for Windowsと連携して構築します。
- WSLバージョン:2.0.14.0
- Dockerバージョン:4.26.1
- Docker-composeバージョン:2.24.1
WSL2のインストールと設定
WSL2はWindows上でLinux環境を動作させるための重要なツールです。以下のMicrosoft公式サイトからインストールしてください:
インストール後、PowerShellでバージョンを確認してください。
Ubuntuのインストール
Microsoft Storeから「Ubuntu for Windows」をインストールし、WSL上での動作を確認します:
Ubuntuが正常にインストールされたことを確認してください。
Docker Desktopのセットアップ
次に、Docker Desktop for Windowsをインストールし、WSL2上のUbuntuと連携させます:
Ubuntu環境でDockerが正常に動作するか確認してください。
このセットアップにより、WSL(Ubuntu)環境でSpringプロジェクトのコンテナを効率的にテンプレート化する基盤が整いました。
各実装の詳細
このセクションでは、Docker-composeとDockerfileを用いたコンテナ環境の構築手順を記載します。特に、トラブルが発生しやすいポイントに焦点を当てます。
docker-composeファイルの解説
docker-compose.ymlファイルは、プロジェクトのコンテナ環境を定義する重要なファイルです。このファイルでは、Springアプリケーションのコンテナ、データベースのコンテナ、その他のサービスのコンテナを設定します。ファイルの内容は以下のGitHubリポジトリで確認できます。
Dockerfileの詳細
実行環境用Dockerfile
実行環境用のDockerfileは、本番環境で使用されるコンテナイメージを構築します。このDockerfileは、アプリケーションが本番環境で正常に動作するように最適化されています。
開発環境用Dockerfile
開発環境用のDockerfileは、開発中のコンテナイメージを構築するために使用されます。このDockerfileは、開発プロセスをサポートするために必要なツールや設定を含んでいます。
application.propertiesの設定
application.propertiesファイルでは、データベース接続設定などの重要なパラメータを設定します。特に以下のポイントに注意してください:
- spring.datasource.url:MySQLデータベースへの接続URLです。ホスト名はDBコンテナ名に設定してください。
- spring.datasource.usernameとspring.datasource.password:データベースのユーザー名とパスワードを指定します。
- server.port:Springアプリケーションのポート番号を設定します。ホスト側のポート番号と一致させる必要があります。
spring.datasource.url=jdbc:mysql://localhost:xxxx/xxxx
spring.datasource.username=xxxx
spring.datasource.password=xxxx
server.port=xxxx
(省略)
Dockerコンテナの起動
以下のコマンドを使用して、Dockerコンテナをバックグラウンドで起動します。このコマンドは、docker-compose.ymlファイルに基づいて、必要なすべてのコンテナをビルドし、起動します。
docker-compose up -d --build
起動結果の確認
コンテナのビルドと起動
コンテナのビルドと起動の結果は以下の画像で確認できます。
データベースの状態確認
PHPMyAdminなどのツールを使用して、データベースの状態を確認します。
アプリケーションへのリクエスト実行
アプリケーションが正常に動作しているかを確認するために、HTTPリクエストを実行し、結果を確認します。
最後に
この記事を通して、WSL(Ubuntu)環境上でSpringプロジェクトのDockerコンテナをテンプレート化しました。このテンプレートを活用することで、プロジェクトの開始から本番環境への移行までの工程を効率化できます。引き続き、便利な技術やアプローチに取り組んでいきたいと思います。
最後までお読みいただき、ありがとうございました!
Discussion