AIイノベーションズ
Railway/Guides

Spring Bootアプリのデプロイ

このステップバイステップガイドで、RailwayにSpring Bootアプリをデプロイする方法を学びます。クイックセットアップ、ワンクリックデプロイ、Dockerfile、その他のデプロイ戦略について説明します。

著者: AIイノベーションズ 阿部隼也X / Twitter

Railwayはこちら

Spring Bootアプリのデプロイ

Spring Bootは、スタンドアロンで本番環境に対応した、すぐに実行できるSpringアプリケーションの作成を簡素化するために設計されたJavaフレームワークです。

このガイドでは、4つの方法でRailwayにSpring Bootアプリをデプロイする方法について説明します。

  1. テンプレートからのワンクリックデプロイ
  2. GitHubリポジトリから
  3. CLIを使用
  4. Dockerfileを使用

それでは、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アプリをデプロイする複数の方法を提供します。

テンプレートからのワンクリックデプロイ

最速で始めたい場合は、ワンクリックデプロイオプションが最適です。

下のボタンをクリックして開始します。

Railwayにデプロイ

デプロイ後はテンプレートから Eject して、GitHub アカウントにリポジトリのコピーを作成することを強くおすすめします。

注: コミュニティによって作成されたさまざまなSpring Bootアプリテンプレートから選択することもできます。

CLIからデプロイ

  1. Railway CLIのインストール
    • CLIをインストールし、Railwayアカウントで認証します。
  2. Railwayプロジェクトの初期化
    • Spring Bootアプリディレクトリで以下のコマンドを実行します。
      railway init
    • プロンプトに従ってプロジェクトに名前を付けます。
    • プロジェクトが作成されたら、提供されたリンクをクリックしてブラウザで表示します。
  3. アプリケーションのデプロイ
    • 以下のコマンドを使用してアプリをデプロイします。
      railway up
    • このコマンドは、アプリのファイルをスキャン、圧縮し、Railwayにアップロードします。ターミナルにはリアルタイムのデプロイログが表示されます。
    • デプロイが完了したら、View logs に移動して、サービスが正常に実行されていることを確認します。
  4. 公開URLの設定
    • 新しいサービスの「設定」タブのNetworkingセクションに移動します。
    • 「Generate Domain」をクリックして、アプリの公開URLを作成します。

GitHubリポジトリからデプロイ

Spring BootアプリをGitHubから直接Railwayにデプロイするには、以下の手順に従ってください。

  1. Railwayで新しいプロジェクトを作成
    • Railwayにアクセスして、新しいプロジェクトを作成します。
  2. GitHubからデプロイ
    • Deploy from GitHub repo を選択し、リポジトリを選択します。
      • RailwayアカウントがまだGitHubにリンクされていない場合は、リンクするように求められます。
  3. アプリのデプロイ
    • Deploy をクリックして、デプロイプロセスを開始します。
    • デプロイされると、アプリ用にRailwayサービスが作成されますが、デフォルトでは公開されません。
  4. デプロイの確認
    • デプロイが完了したら、View logs に移動して、サーバーが正常に実行されていることを確認します。 注: デプロイプロセス中に、RailwayはJavaアプリであることを自動的に検出します。
  5. 公開URLの設定
    • 新しいサービスの「設定」タブのNetworkingセクションに移動します。
    • 「Generate Domain」をクリックして、アプリの公開URLを作成します。

Dockerfileの使用

  1. helloworld またはSpring Bootアプリのルートディレクトリに Dockerfile を作成します。
  2. 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"]
  3. CLIまたはGitHubからデプロイします。

Railwayは Dockerfile を自動的に検出し、それを使用してアプリをビルドおよびデプロイします。

注: Railwayは、パブリックおよびプライベートのDockerイメージからのデプロイもサポートしています。

このガイドでは、Railwayの主なデプロイオプションについて説明しました。セットアップに適したアプローチを選択し、Spring Bootアプリをシームレスにデプロイし始めてください!

次のステップ

Railwayでのエクスペリエンスを最大限に活用するために、これらのリソースを調べてください。

Railwayはこちら

PR