💭

[2024年8月]SpringBootで作ったWEBアプリをRenderで無料で公開する

2024/08/16に公開

springで作ったWEBアプリを無料で公開する方法を紹介します。今まで無料だったHerokuが有料になってしまったので、Renderを使います。

Spring Bootでアプリを作る

今回は画面を表示するだけの非常に簡単なアプリを用意します。Mavenプロジェクトとして作成します。

参考: Spring BootでMavenプロジェクトを作成

src/main/resources/static 配下に index.html ファイルを作成しただけのものです。

Dockerファイルを作る

ファイル作成

プロジェクト直下にDockerfileを作成します。

Dockerfileの内容

Dorkerfile
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ファイルから値を参照してください。

pom.xml
	<artifactId>spring-practice</artifactId>
	<version>0.0.1-SNAPSHOT</version>

ここでは以下の値をハイフンで繋いで入力しています。
<artifactId>spring-practice</artifactId>
<version>0.0.1-SNAPSHOT</version>

GitHubに登録

詳細な手順は以下を参照してください:
https://pleiades.io/help/idea/github.html

Renderにデプロイ

  1. Renderを開きます。

  2. Get Started or Freeをクリックします。

  3. Create an accountGitHubをクリックして連携します。

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

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

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

  6. Instance TypeFreeを選択します。

  7. Deploy Web Serviceをクリックします。

  8. デプロイが開始します。

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

  9. 表示を確認します。

アプリケーションの停止、削除

  1. Dashboardのタブから該当のアプリの[…]をクリックして、Settingsを選択します。

  2. 画面を下にスクロールし、以下のオプションを選択します:

    • 削除したい場合はDelete Web Service
    • 一時的に停止したい場合はSuspend Web Service

参考

https://qiita.com/hardreggaecafe/items/406042168fe2bce3b53d

GitHubで編集を提案

Discussion