SpringBoot

Spring BootアプリケーションをDockerでデプロイする実践ガイド

ⓘ本ページはプロモーションが含まれています

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


スポンサードリンク

Spring BootアプリケーションのJARファイル作成

Spring BootアプリケーションをDockerで実行するには、まず実行可能JARファイルの生成が必要です。この手順はローカルでの動作確認や本番環境へのデプロイに共通します。

Maven/Gradleによる実行可能JARの生成方法

Spring Bootプロジェクトでは、MavenまたはGradleを使用して実行可能JARを作成できます。

Mavenの場合spring-boot-maven-pluginpom.xmlに追加することで自動で実行ファイルが生成されます。

Gradleの場合applicationプラグインを使用し、bootJarタスクを実行します。

注意: Mavenのバージョンは3.8.7と記載されていますが、最新バージョン(例: 3.9.x)への移行が推奨されます。プロジェクトに合わせた適切なバージョン管理が必要です。

生成されたJARファイルは./target/(Maven)または./build/libs/(Gradle)に保存されます。このファイルをDockerイメージに組み込むことで、コンテナ内での実行が可能になります。


Dockerfileの作成と構成

Dockerfileは、Spring Bootアプリケーションを動作させるための「レシピ」です。適切なベースイメージの選定やマルチステージビルドの活用により、セキュリティとパフォーマンスが向上します。

ベースイメージ選定のポイント

ベースイメージはJavaバージョンに応じて選択します。以下の表で比較し、目的に合ったものを選ぶことが重要です。

ベースイメージ 特徴 使用シーン
openjdk:17-jdk-alpine シンプルで軽量 コンテナサイズを最小限にしたい場合
eclipse-temurin:17-jdk-focal 頻繁なセキュリティパッチが適用される 稳定性が重視される環境

補足: eclipse-temurinはOpenJDKの実装で、企業やプロジェクト向けにメンテナンスされています。ベースイメージの選定時には、サポート終了日やライセンス条件を確認してください。

マルチステージビルドの活用

マルチステージビルドを使うことで、最終的なイメージサイズを抑えることができます。

注意: ビルドフェーズで使用するMavenバージョン(例: 3.9.0)はプロジェクトの依存関係に合わせて最新版を指定してください。

この方法は、ビルドに必要なツール(Maven)を最終イメージに含まないため、セキュリティ面で有利です。


Dockerイメージのビルド・プッシュ手順

生成したDockerfileからイメージを作成し、レジストリへ公開することで、ローカル環境だけでなくクラウドでの利用も可能になります。

Docker Hubへの公開手順

  1. ローカルでイメージをビルドする
    bash
    docker build -t my-springboot-app:latest .

  2. Docker Hubにログイン
    bash
    docker login

  3. イメージをプッシュ
    bash
    docker push my-springboot-app:latest

ベストプラクティス: タグ付けでv1.0.0などのバージョン管理を行うと、CI/CDとの連携が容易になります。


AWS ECS/Fargateによるクラウドデプロイ

AWS ECS(Elastic Container Service)は、Dockerコンテナをクラウドで運用するためのサービスです。Fargateを選択することで、インフラ管理を簡略化できます。

Task Definitionの作成手順

  1. AWSコンソールからECSクラスタを作成
  2. Task Definitionでコンテナ定義を設定し、Dockerイメージ(公開済みまたはプライベートレジストリ)を指定
  3. Security Groupでネットワークアクセスを制御(必要に応じてHTTPSや特定ポートを開く)

ポイント: Fargateはノード管理不要なため、開発者はアプリケーションのデプロイに集中できます。ただし、セキュリティグループの設定には注意が必要です。


Docker Composeでのローカル環境構築

複数コンテナを連携させるローカル開発環境を構築する際には、Docker Composeが効果的です。

サービス間依存関係の定義方法

docker-compose.ymlファイルにサービスとネットワークの設定を記述します。

補足: postgres:14は現在の安定版ですが、プロジェクトに応じて最新バージョン(例: 15)への移行も検討してください。

この設定で、アプリケーションとデータベースの連携が自動化され、ローカル環境での本番に近い構成が可能です。


まとめ

  • JARファイル作成:MavenまたはGradleを使用し、実行可能な形式へビルド
  • Dockerfile構成:軽量なベースイメージとマルチステージビルドでセキュリティ強化
  • イメージの公開:Docker Hubやプライベートレジストリを活用したバージョン管理
  • クラウドデプロイ:AWS ECS/Fargateでインフラ管理を簡略化
  • ローカル環境構築:Docker Composeによりサービス連携とネットワーク設定を効率的に行う

本ガイドに従って、Spring BootアプリケーションのDockerデプロイをスムーズに実施してください。

スポンサードリンク

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


-SpringBoot