タイトルの通り、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
を使用して、リクエストを行います。
(詳細が気になる方は、以下をご確認ください。)