🎯 本記事の目的
Spring Boot で作成した Java Web アプリケーションを、PostgreSQL データベースと連携しながら Docker Compose で構築・起動する手順をまとめます。
以下の方におすすめです:
- Java × Spring Boot で作ったアプリを Docker で動かしてみたい
- DBにPostgreSQLを使いたい
- 開発用のローカル環境をDockerで効率よく構築したい
🐳 1. Docker & Docker Compose のインストール
Windows(WSL2を使用)
- Docker Desktop をダウンロードしてインストール
- インストール後、設定から「WSL2 をバックエンドとして使用」を有効にする
- ターミナルで以下を確認:
docker -v
# Docker version 24.0.x などと表示されればOK
docker compose version
# Docker Compose version v2.x.x などと表示されればOK
📁 2. ディレクトリ構成(例)
.
├── build.gradle
├── docker-compose.yml
├── Dockerfile
├── docker-logs/
├── src/
└── build/libs/app.jar
📦 3. Dockerfile
Spring Boot アプリ(jar)をビルドして実行するための Dockerfile を用意します。
以下のコマンドでDockerfileを作成します。
nano Dockerfile
以下の内容がDockerfileの中身になります。
記載が終わったら、Ctrl + X → Y → Enter で保存して閉じます。
FROM amazoncorretto:21
ENV TZ=Asia/Tokyo
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
WORKDIR /app
COPY build/libs/*.jar app.jar
ENTRYPOINT ["java", "-jar", "app.jar"]
🧩 4. docker-compose.yml
アプリとデータベースを連携する構成です。
services:
moneytrack-db:
image: postgres:16.7
container_name: moneytrack-db
environment:
POSTGRES_DB: MoneyTrack
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgresql
volumes:
- moneytrack-data:/var/lib/postgresql/data
ports:
- "5433:5432"
networks:
- moneytrack-network
moneytrack-app:
build: .
image: moneytrack-app
container_name: moneytrack-app
ports:
- "8080:8080"
environment:
SPRING_PROFILES_ACTIVE: docker
SPRING_DATASOURCE_URL: jdbc:postgresql://moneytrack-db:5432/MoneyTrack
SPRING_DATASOURCE_USERNAME: postgres
SPRING_DATASOURCE_PASSWORD: postgresql
volumes:
- ./docker-logs:/app/docker-logs
depends_on:
- moneytrack-db
networks:
- moneytrack-network
volumes:
moneytrack-data:
name: moneytrack-data
networks:
moneytrack-network:
driver: bridge
🚀 5. アプリのビルドと起動
① Spring Boot アプリのビルド(Gradle)
./gradlew clean build
→ build/libs/ に xxx.jar が生成されます。
② Docker起動(Compose)
docker compose up -d --build
📡 6. アクセス確認
アプリ起動後、以下にアクセスして画面が表示されるか確認:
http://localhost:8080/
🧪 7. ログ確認
# コンテナログをリアルタイムで確認
docker compose logs -f moneytrack-app
# ファイルとして出力されたログを確認
cat docker-logs/application.log
🛑 8. 停止・削除
# 停止
docker compose down
# ボリュームも削除(DB初期化されます)
docker compose down -v
✅ 補足
image
: を指定することで、独自イメージ名(例:moneytrack-app)を明示的に指定可能です。
volumes
: で名前付きボリュームを指定すれば、ホスト上に保存される名前も一貫性が持てます。
🔚 おわりに
Spring Boot アプリを PostgreSQL と連携し、Docker Compose で簡単にローカル環境構築する手順をまとめました。
この構成はそのまま本番環境への移行や AWS への応用も可能です。
👨💻 関連リンク
Docker 公式ドキュメント
https://docs.docker.com/
Spring Boot 公式ガイド
https://spring.io/guides
PostgreSQL 公式サイト
https://www.postgresql.org/