タイトルの通り、Eclipseで作成したSpring BootアプリをDockerで動かす方法を調べたので、備忘録として書いていきます。
Spring Boot アプリから jar を作成
まず、eclipseで作成したspring bootアプリから、.jarを作成します。
.jarを作成するためのプロジェクトは、以前作成したものがあるので、中身が気になる方は以下からご確認ください。
eclipse での jar の作成の手順(Gradle)
※今回のjarの作成手順は、プロジェクトをGradleで作成しているため、Gradleでの作成手順になります。
(1)プロジェクトを開いた状態から、「ウィンドウ」>「ビューの表示」>「Gradleタスク」を選択します。
(「Gradleタスク」が無い場合は「その他」を選択して、ポップアップした項目の中から選択します)

(2)Eclipse画面下に「Gradleタスク」のタブが表示されるため、タブ内の項目で「プロジェクト名(今回の場合はtest_spring_boot)」>「build」>「bootJar」を選択し、コンテキストメニューから「Gradleタスクの実行」を押下

(3)jarの作成が成功すると、「プロジェクトフォルダ/build/libs」下に.jarファイルが生成されます。
(今回の場合だと、プロジェクトフォルダ名がtest_spring_boot)


Docker で Spring Boot アプリを起動
以降の作業では、自身のPC上でdockerコマンドが実行できることを前提としています。
今回の検証では、Windowsで作業しており、docker desktopをインストールしています。
Dockerfile の作成
以下のDockerfileを作成します。
FROMのeclipse-temurin:17-jdk-alpineは、.jarを作成したときの開発環境のJavaのバージョンに合わせる必要があり、今回の場合ではJavaSE-17での開発となっています。
jarファイル名称がtest_spring_boot-0.0.1-SNAPSHOT.jarになっているため、これは各々の環境ごとに修正する必要がありますが、それ以外は変更不要かと思います。
FROM eclipse-temurin:17-jdk-alpine
ARG JAR_FILE=target/test_spring_boot-0.0.1-SNAPSHOT.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
イメージを作成(ビルド)
Dockerfileを配置した後、以下のdocker buildコマンドを実行します。
(今回の場合は、生成したjarファイルを移動せずに作業しているため、build/libs/下にjarファイルがあることになります。)
以下のコマンドで実行した場合は、イメージ名はtest_spring_bootとなります。
docker build --build-arg JAR_FILE=build/libs/test_spring_boot-0.0.1-SNAPSHOT.jar -t test_spring_boot .
作成したイメージは、以下のコマンドで確認ができます。
作成したdockerイメージ、test_spring_bootが一覧の中に表示されていれば成功です。
docker images
コンテナを起動
先ほど作成したイメージを、以下コマンドを実行することで起動できます。
以下コマンドのままで実行した場合、Spring Bootアプリはコンテナの8080ポートを使用し、ローカルホストの8081ポートでアクセスが可能になります。
docker run -p 8081:8080 test_spring_boot
動作確認
動作確認として、http://localhost:8081にアクセスします。
実際のアプリの中身は/controller_test_2/get_sample_jsonに作ってあるため、今回は、http://localhost:8081/controller_test_2/get_sample_jsonにアクセスを行います。
ブラウザーでURLを入力してアクセスすると以下の様になります。

今回のアプリは、リクエストボディに特定のJSONを付与しないとエラーになるような仕様になっているため、次はpostmanを使用して、リクエストを行います。
(詳細が気になる方は、以下をご確認ください。)
