[2024年8月]SpringBootで作ったWEBアプリをRenderで無料で公開する
springで作ったWEBアプリを無料で公開する方法を紹介します。今まで無料だったHerokuが有料になってしまったので、Renderを使います。
Spring Bootでアプリを作る
今回は画面を表示するだけの非常に簡単なアプリを用意します。Mavenプロジェクトとして作成します。
参考: Spring BootでMavenプロジェクトを作成
src/main/resources/static 配下に index.html ファイルを作成しただけのものです。
Dockerファイルを作る
ファイル作成
プロジェクト直下にDockerfileを作成します。

Dockerfileの内容
FROM maven:3-eclipse-temurin-17 AS build
COPY ./ /home/app
RUN cd /home/app && mvn clean package -Dmaven.test.skip=true
FROM eclipse-temurin:17-alpine
COPY --from=build /home/app/target/spring-practice-0.0.1-SNAPSHOT.jar /usr/local/lib/demo.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "/usr/local/lib/demo.jar"]
1. FROM maven:3-eclipse-temurin-17 AS build
-
説明: これはマルチステージビルドの最初のステージです。
maven:3-eclipse-temurin-17というベースイメージを使用します。このイメージには、Maven 3とJava 17(Temurinディストリビューション)がインストールされています。 -
役割: このステージはアプリケーションをビルドするために使用されます。
AS buildは、このステージに名前(build)を付けて、後で参照できるようにします。
2. COPY ./ /home/app
-
説明: Dockerコンテナ内の
/home/appディレクトリに、ホストマシンのカレントディレクトリ(./)の内容をコピーします。 - 役割: アプリケーションのソースコードと関連ファイルを、ビルドステージのコンテナ内にコピーします。
3. RUN cd /home/app && mvn clean package -Dmaven.test.skip=true
-
説明:
/home/appディレクトリに移動して、mvn clean packageコマンドを実行します。-Dmaven.test.skip=trueはテストの実行をスキップするオプションです。 -
役割: ソースコードをビルドし、実行可能なJARファイルを生成します。この場合、
targetディレクトリにspring-practice-0.0.1-SNAPSHOT.jarというファイルが生成されます。
4. FROM eclipse-temurin:17-alpine
-
説明: マルチステージビルドの2つ目のステージです。
eclipse-temurin:17-alpineという軽量なJava 17のベースイメージを使用します(Alpine Linuxベース)。 - 役割: このステージは、実行時に必要な軽量なJavaランタイム環境を提供します。ビルドに不要なMavenは含まれません。
5. COPY --from=build /home/app/target/spring-practice-0.0.1-SNAPSHOT.jar /usr/local/lib/demo.jar
-
説明: 最初のステージ(
build)から、ビルド済みのJARファイルをコピーします。コピー元は/home/app/target/spring-practice-0.0.1-SNAPSHOT.jar、コピー先は新しいコンテナ内の/usr/local/lib/demo.jarです。 - 役割: ビルドされたJARファイルを実行ステージのコンテナにコピーします。これで、アプリケーションが実行可能になります。
6. EXPOSE 8080
- 説明: Dockerコンテナが使用するポートを指定します。この場合、アプリケーションはポート8080でリッスンします。
- 役割: このステートメント自体はポートを開くことはしませんが、コンテナがこのポートを使用することを他の開発者やオーケストレーションツールに伝えます。
7. ENTRYPOINT ["java", "-jar", "/usr/local/lib/demo.jar"]
-
説明: コンテナが起動したときに実行されるコマンドを指定します。この場合、
java -jar /usr/local/lib/demo.jarを実行して、Spring Bootアプリケーションを起動します。 - 役割: コンテナのエントリーポイントを設定し、指定されたコマンドが実行されるようにします。
spring-practice-0.0.1-SNAPSHOT.jarの値は、pom.xmlファイルから値を参照してください。
<artifactId>spring-practice</artifactId>
<version>0.0.1-SNAPSHOT</version>
ここでは以下の値をハイフンで繋いで入力しています。
<artifactId>spring-practice</artifactId>
<version>0.0.1-SNAPSHOT</version>
GitHubに登録
詳細な手順は以下を参照してください:
Renderにデプロイ
-
Renderを開きます。
-
Get Started or Freeをクリックします。

-
Create an accountのGitHubをクリックして連携します。

-
ダッシュボードが開いたら、+Newを押して、Web Serviceを選択します。

-
Public Git Repositoryを選択し、GitHubからアプリのURLをコピーして貼り付けます。
Connectをクリックします。

※URLは、GitHubで該当のWEBアプリのCode → HTTPSからコピーできます。

-
Instance TypeでFreeを選択します。

-
Deploy Web Serviceをクリックします。

-
デプロイが開始します。

進行状況がIn ProgressからLiveになったら完了です。URLが表示されるので、クリックしてアクセスします。

-
表示を確認します。

アプリケーションの停止、削除
-
Dashboardのタブから該当のアプリの[…]をクリックして、Settingsを選択します。

-
画面を下にスクロールし、以下のオプションを選択します:
- 削除したい場合はDelete Web Service。
- 一時的に停止したい場合はSuspend Web Service。
参考
Discussion