Docker ComposeでJakarta EEとデータベースを連携!初心者でも簡単な設定方法
生徒
「Jakarta EEのWebアプリとデータベースをDockerで連携したいんですが、どうすればいいですか?」
先生
「Docker Composeを使えば、Jakarta EEアプリケーションサーバーとデータベースを簡単に同時に起動して連携させることができますよ。」
生徒
「環境構築が苦手でもできますか?」
先生
「もちろんです。初心者でもできるように丁寧に解説していきますね!」
1. Jakarta EEとデータベースを連携する環境の全体像
Jakarta EEはエンタープライズ向けのJavaアプリケーションを開発するためのプラットフォームで、通常はWebアプリケーションサーバー(例:Payara、WildFlyなど)とデータベース(例:PostgreSQL、MySQL)を連携させて使用します。Docker Composeを使えば、これらを1つの構成ファイルで管理でき、開発環境を一瞬で構築できます。
2. Docker Composeの基本構成とは?
Docker Composeとは、複数のコンテナ(Jakarta EEサーバーとデータベース)をまとめて起動・停止できる便利なツールです。以下はJakarta EEアプリとPostgreSQLを連携させる基本的なdocker-compose.ymlファイルの例です。
version: "3.8"
services:
payara:
image: payara/server-full
ports:
- "8080:8080"
depends_on:
- db
environment:
- POSTGRES_URL=jdbc:postgresql://db:5432/sampledb
- POSTGRES_USER=sampleuser
- POSTGRES_PASSWORD=samplepass
volumes:
- ./target/sampleapp.war:/opt/payara/deployments/sampleapp.war
db:
image: postgres:13
restart: always
environment:
POSTGRES_DB: sampledb
POSTGRES_USER: sampleuser
POSTGRES_PASSWORD: samplepass
volumes:
- db_data:/var/lib/postgresql/data
volumes:
db_data:
3. WARファイルの配置とビルドについて
Jakarta EEで作成したWebアプリケーションは、MavenやGradleを使って.warファイルにビルドします。この.warファイルをpayaraサービスのボリュームにマウントすることで、自動的にデプロイされます。たとえば、Mavenでビルドするとtarget/sampleapp.warに出力されます。
4. PostgreSQLとの接続設定について
Jakarta EEアプリ側でPostgreSQLに接続するには、JDBC接続文字列を環境変数で渡すか、アプリケーションの設定ファイル(persistence.xmlやglassfish-resources.xmlなど)で指定します。
以下はJDBC URLの例です:
jdbc:postgresql://db:5432/sampledb
ホスト名はdbとすることで、Docker Compose内のPostgreSQLコンテナに接続できます。
5. Docker Composeの起動方法
準備が整ったら、以下のコマンドでJakarta EEアプリケーションサーバーとPostgreSQLを同時に起動できます。
docker-compose up -d
コンテナが立ち上がると、アプリケーションはhttp://localhost:8080/sampleappでアクセス可能になります。
6. EclipseやIntelliJと連携する方法
Jakarta EEアプリケーションをEclipseやIntelliJから開発している場合、WARファイルをローカルでビルドし、Dockerに自動コピーする仕組みを組み込むと便利です。たとえば、Mavenのビルド後にtargetフォルダを監視してdocker cpするシェルスクリプトを作成することもできます。
7. Jakarta EE環境でよく使われるDB構成
Jakarta EEでは、PostgreSQL、MySQL、MariaDB、Oracle Databaseなどがよく使われます。初心者にはPostgreSQLが設定も簡単で、公式Dockerイメージも整っており、Jakarta EEとの相性も良いためおすすめです。
8. トラブル時の確認ポイント
起動後にアプリケーションがうまく動かない場合は、以下の点をチェックしましょう。
- PayaraのログでWARファイルのデプロイエラーがないか
- DBとの接続URLやユーザー名・パスワードが正しいか
- PostgreSQLが正しく起動しているか(
docker logs db) - ホスト名
dbで接続できているか
9. Docker Composeで簡単に再現できる環境構築
Jakarta EEの学習や開発において、Docker Composeを使った構成は再現性が高く、複数人での開発やCI環境にも最適です。サーバーやデータベースのインストール不要で、OSに依存せず動作するため、特に初心者には大きな助けとなります。