Skip to content

デプロイメント

このトピックでは、Ktorアプリケーションをデプロイする方法の概要を説明します。

サーバーKtorアプリケーションのデプロイプロセスを簡素化するために、Gradle向けのKtorプラグインを使用できます。このプラグインは以下の機能を提供します。

  • Fat JARのビルド。
  • アプリケーションのDocker化。

Ktorデプロイの特性

サーバーKtorアプリケーションのデプロイプロセスは、以下の特性に依存します。

  • アプリケーションを自己完結型パッケージとしてデプロイするか、サーブレットコンテナ内でデプロイするか。
  • サーバーを作成および構成するために使用する方法。

自己完結型アプリとサーブレットコンテナ

Ktorでは、アプリケーション内で直接、目的のネットワークエンジン(Netty、Jetty、Tomcatなど)を使用してサーバーを作成および起動できます。この場合、エンジンはアプリケーションの一部です。アプリケーションは、エンジン設定、接続、およびSSLオプションを制御できます。アプリケーションをデプロイするには、Fat JARまたは実行可能JVMアプリケーションとしてパッケージングできます。

上記のアプローチとは対照的に、サーブレットコンテナはアプリケーションのライフサイクルと接続設定を制御する必要があります。Ktorは、アプリケーションの制御をサーブレットコンテナに委譲する特別なServletApplicationEngineエンジンを提供します。サーブレットコンテナ内にデプロイするには、WARアーカイブを生成する必要があります。

設定:コードと設定ファイル

自己完結型Ktorアプリケーションのデプロイ設定は、サーバーの作成と構成に使用されるアプローチ(コード内での設定、または設定ファイルの使用)に依存する場合があります。例として、ホスティングプロバイダーは、受信リクエストをリッスンするためのポートの指定を要求する場合があります。この場合、コード内またはapplication.conf/application.yamlでポートを設定する必要があります。

パッケージング

アプリケーションをデプロイする前に、以下のいずれかの方法でパッケージングする必要があります。

  • Fat JAR

    Fat JARは、すべてのコード依存関係を含む実行可能なJARです。Fat JARをサポートする任意のクラウドサービスにデプロイできます。GraalVM用のネイティブバイナリを生成する場合にもFat JARが必要です。Fat JARを作成するには、Gradle用のKtorプラグイン、またはMaven用のAssemblyプラグインを使用できます。

  • 実行可能JVMアプリケーション

    実行可能JVMアプリケーションは、コード依存関係と生成された起動スクリプトを含むパッケージ化されたアプリケーションです。Gradleの場合、Applicationプラグインを使用してアプリケーションを生成できます。

  • WAR

    WARアーカイブを使用すると、TomcatやJettyなどのサーブレットコンテナ内にアプリケーションをデプロイできます。

  • GraalVM

    Ktorサーバーアプリケーションは、異なるプラットフォーム用のネイティブイメージを持つためにGraalVMを利用できます。

コンテナ化

アプリケーションをパッケージングした後(例: 実行可能JVMアプリケーションまたはFat JARとして)、このアプリケーションを含むDockerイメージを準備できます。このイメージは、Kubernetes、Swarm、または必要なクラウドサービスのコンテナインスタンス上でアプリケーションを実行するために使用できます。

公開

以下のチュートリアルでは、特定のクラウドプロバイダーにKtorアプリケーションをデプロイする方法を示します。

SSL

Ktorサーバーがリバースプロキシ(NginxやApacheなど)の背後に配置されている場合、またはサーブレットコンテナ(TomcatやJetty)内で実行されている場合、SSL設定はリバースプロキシまたはサーブレットコンテナによって管理されます。必要に応じて、Java KeyStoreを使用してKtorがSSLを直接提供するように設定できます。

Ktorアプリケーションがサーブレットコンテナ内にデプロイされている場合、SSL設定は有効にならないことに注意してください。