Spring Bootアプリのデプロイ
このステップバイステップガイドで、RailwayにSpring Bootアプリをデプロイする方法を学びます。クイックセットアップ、ワンクリックデプロイ、Dockerfile、その他のデプロイ戦略について説明します。
著者: AIイノベーションズ 阿部隼也(X / Twitter)Spring Bootアプリのデプロイ
Spring Bootは、スタンドアロンで本番環境に対応した、すぐに実行できるSpringアプリケーションの作成を簡素化するために設計されたJavaフレームワークです。
このガイドでは、4つの方法でRailwayにSpring Bootアプリをデプロイする方法について説明します。
それでは、Spring Bootアプリを作成しましょう!
Spring Bootアプリの作成
注: Spring BootアプリがローカルまたはGitHubに既にある場合は、この手順をスキップして、Spring BootアプリをRailwayにデプロイに直接進むことができます。
新しいSpring Bootアプリを作成するには、お使いのマシンにJDKがインストールされていることを確認してください。
start.spring.ioにアクセスして、新しいSpring Bootアプリを初期化します。以下のオプションを選択して、スターターアプリをカスタマイズして生成します。
- プロジェクト:Maven
- 言語:Java
- Spring Boot:3.3.4
- プロジェクトメタデータ:
- グループ:com.railwayguide
- アーティファクト:helloworld
- 名前:helloworld
- 説明:Railwayガイドのデモプロジェクト
- パッケージ名:com.railwayguide.helloworld
- パッケージング:jar
- Java:17
- 依存関係:
- Add Dependencies ボタンをクリックし、Spring Web を検索して選択します。
新しいアプリを初期化するためのSpring Bootアプリイニシャライザ構成
次に、Generate ボタンをクリックし、zipファイルをダウンロードして、お使いのマシンのフォルダに解凍します。
アプリケーションファイルの変更
次に、IDEでアプリを開き、src/main/java/com/railwayguide/helloworld/HelloWorldApplication.java
ファイルに移動します。
内容を以下のコードに置き換えます。
package com.railwayguide.helloworld;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@SpringBootApplication
@RestController
public class HelloworldApplication {
public static void main(String[] args) {
SpringApplication.run(HelloworldApplication.class, args);
}
@GetMapping("/")
public String hello() {
return String.format("Hello world from Java Spring Boot!");
}
}
hello()
メソッドを追加し、レスポンス「Hello world from Java Spring Boot!」を返すようにしました。
@RestController
アノテーションはこのクラスをWebコントローラーとして指定し、@GetMapping("/")
は hello()
メソッドをルートURL /
に送信されるリクエストを処理するようにマッピングします。
Spring Bootアプリをローカルで実行
次に、ターミナル経由で helloworld
ディレクトリに cd
し、次のMavenコマンドを実行します。
./mvnw spring-boot:run
注: これはLinuxおよびmacOS用のMavenラッパーであり、システムにインストールされているバージョンではなく、.mvn/wrapper/maven-wrapper.jar のバンドルされたMavenのバージョンを使用します。
ブラウザを開き、http://localhost:8080
にアクセスしてアプリを表示します。
Spring BootアプリをRailwayにデプロイする
Railwayは、セットアップと好みに応じて、Spring Bootアプリをデプロイする複数の方法を提供します。
テンプレートからのワンクリックデプロイ
最速で始めたい場合は、ワンクリックデプロイオプションが最適です。
下のボタンをクリックして開始します。
デプロイ後はテンプレートから Eject して、GitHub アカウントにリポジトリのコピーを作成することを強くおすすめします。
注: コミュニティによって作成されたさまざまなSpring Bootアプリテンプレートから選択することもできます。
CLIからデプロイ
- Railway CLIのインストール:
- CLIをインストールし、Railwayアカウントで認証します。
- Railwayプロジェクトの初期化:
- Spring Bootアプリディレクトリで以下のコマンドを実行します。
railway init
- プロンプトに従ってプロジェクトに名前を付けます。
- プロジェクトが作成されたら、提供されたリンクをクリックしてブラウザで表示します。
- Spring Bootアプリディレクトリで以下のコマンドを実行します。
- アプリケーションのデプロイ:
- 以下のコマンドを使用してアプリをデプロイします。
railway up
- このコマンドは、アプリのファイルをスキャン、圧縮し、Railwayにアップロードします。ターミナルにはリアルタイムのデプロイログが表示されます。
- デプロイが完了したら、View logs に移動して、サービスが正常に実行されていることを確認します。
- 以下のコマンドを使用してアプリをデプロイします。
- 公開URLの設定:
- 新しいサービスの「設定」タブのNetworkingセクションに移動します。
- 「Generate Domain」をクリックして、アプリの公開URLを作成します。
GitHubリポジトリからデプロイ
Spring BootアプリをGitHubから直接Railwayにデプロイするには、以下の手順に従ってください。
- Railwayで新しいプロジェクトを作成:
- Railwayにアクセスして、新しいプロジェクトを作成します。
- GitHubからデプロイ:
- Deploy from GitHub repo を選択し、リポジトリを選択します。
- RailwayアカウントがまだGitHubにリンクされていない場合は、リンクするように求められます。
- Deploy from GitHub repo を選択し、リポジトリを選択します。
- アプリのデプロイ:
- Deploy をクリックして、デプロイプロセスを開始します。
- デプロイされると、アプリ用にRailwayサービスが作成されますが、デフォルトでは公開されません。
- デプロイの確認:
- デプロイが完了したら、View logs に移動して、サーバーが正常に実行されていることを確認します。 注: デプロイプロセス中に、RailwayはJavaアプリであることを自動的に検出します。
- 公開URLの設定:
- 新しいサービスの「設定」タブのNetworkingセクションに移動します。
- 「Generate Domain」をクリックして、アプリの公開URLを作成します。
Dockerfileの使用
helloworld
またはSpring BootアプリのルートディレクトリにDockerfile
を作成します。Dockerfile
に以下の内容を追加します。# Eclipse temurin alpine公式イメージを使用 # https://hub.docker.com/_/eclipse-temurin FROM eclipse-temurin:21-jdk-alpine # アプリディレクトリを作成して変更 WORKDIR /app # ローカルコードをコンテナイメージにコピー COPY . ./ # アプリのビルド RUN ./mvnw -DoutputFile=target/mvn-dependency-list.log -B -DskipTests clean dependency:list install # ターゲットディレクトリ内のJARファイルを動的に見つけてアプリを実行 CMD ["sh", "-c", "java -jar target/*.jar"]
- CLIまたはGitHubからデプロイします。
Railwayは Dockerfile
を自動的に検出し、それを使用してアプリをビルドおよびデプロイします。
注: Railwayは、パブリックおよびプライベートのDockerイメージからのデプロイもサポートしています。
このガイドでは、Railwayの主なデプロイオプションについて説明しました。セットアップに適したアプローチを選択し、Spring Bootアプリをシームレスにデプロイし始めてください!
次のステップ
Railwayでのエクスペリエンスを最大限に活用するために、これらのリソースを調べてください。
PR