ファイルでの設定
Ktorを使用すると、ホストアドレスやポート、
EngineMain
の場合、Ktorは HOCON またはYAML形式を使用する設定ファイルから構成を読み込みます。この方法により、サーバーを構成する際の柔軟性が高まり、アプリケーションを再コンパイルすることなく設定を変更できます。さらに、コマンドラインからアプリケーションを実行し、対応する コマンドライン 引数を渡すことで、必要なサーバーパラメーターを上書きできます。
概要
EngineMain を使用してサーバーを起動する場合、Ktorは resources ディレクトリにある application.* というファイルから設定を自動的に読み込みます。以下の2つの設定形式がサポートされています。
HOCON ( application.conf )
YAML ( application.yaml )
NOTE
YAML設定ファイルを使用するには、
ktor-server-config-yaml
依存関係を追加する必要があります。既存のGradle/MavenプロジェクトにKtor Serverの依存関係を追加する方法を学びます。
設定ファイルには、少なくともktor.application.modules
プロパティを使用して指定された
この場合、Ktorは以下の Application.kt ファイル内のApplication.module
関数を呼び出します。
読み込むモジュール以外にも、 事前定義された (ポートやホスト、SSL設定など)およびカスタムのさまざまなサーバー設定を構成できます。 いくつかの例を見てみましょう。
SSL構成
以下の例では、Ktorが8443
番のSSLポートでリッスンすることを有効にし、必要な
security
ブロックで指定しています。 カスタム構成
事前定義されたプロパティを指定する以外に、Ktorはカスタム設定を構成ファイルに保持することを許可します。 以下の構成ファイルには、JWT設定を保持するために使用されるカスタムjwt
グループが含まれています。
これらの設定はコードで読み込んで処理できます。
事前定義されたプロパティ
以下は、構成ファイル内で使用できる事前定義された設定のリストです。
ホストアドレス。
例 : 0.0.0.0
リスニングポート。このプロパティを0
に設定すると、サーバーがランダムなポートで実行されます。
例 : 8080
, 0
リスニングSSLポート。このプロパティを0
に設定すると、サーバーがランダムなポートで実行されます。
例 : 8443
, 0
NOTE
SSLには、以下にリストされている追加オプションが必要であることに注意してください。
自動リロードに使用される監視パス。
例 : /
シャットダウンURL。 このオプションは、
サーバーが新しいリクエストの受け入れを停止するまでの最大時間(ミリ秒単位)。
サーバーが完全に停止するまで待機する最大時間(ミリ秒単位)。
アプリケーション呼び出しを処理するために使用されるスレッドプールの最小サイズ。
新しい接続を受け入れ、呼び出し処理を開始するために使用されるスレッドの数。
接続の処理、メッセージの解析、およびエンジンの内部作業を行うためのイベントグループのサイズ。
ktor.deployment.sslPort
を設定した場合、以下の
SSLキーストア。
SSLキーストアのエイリアス。
SSLキーストアのパスワード。
SSL秘密鍵のパスワード。
環境変数
設定ファイルでは、${ENV}
/ $ENV
構文を使用してパラメーターを環境変数に置き換えることができます。 例えば、PORT
環境変数をktor.deployment.port
プロパティに次のように割り当てることができます。
この場合、環境変数の値がリスニングポートの指定に使用されます。 実行時にPORT
環境変数が存在しない場合は、次のようにデフォルトのポート値を指定できます。
コードでの設定の読み込み
Ktorでは、設定ファイル内で指定されたプロパティの値にコードからアクセスできます。 例えば、ktor.deployment.port
プロパティを指定した場合、...
...アプリケーションの設定には ApplicationEnvironment.config を使用してアクセスし、必要なプロパティ値は次のように取得できます。
これは、カスタム設定を設定ファイルに保持し、その値にアクセスする必要がある場合に特に役立ちます。
コマンドライン
EngineMainを使用してサーバーを作成する場合、コマンドラインから
利用可能なコマンドラインオプションは以下の通りです。
JARファイルへのパス。
リソースからの application.conf / application.yaml の代わりに使用されるカスタム設定ファイルへのパス。
例 : java -jar sample-app.jar -config=anotherfile.conf
注 : 複数の値を渡すことができます。java -jar sample-app.jar -config=config-base.conf -config=config-dev.conf
。この場合、すべての設定がマージされ、右側の設定の値が優先されます。
ホストアドレス。
リスニングポート。
自動リロードに使用される監視パス。
リスニングSSLポート。
SSLキーストア。
対応するコマンドラインオプションがない事前定義されたプロパティを上書きする必要がある場合は、-P
フラグを使用します。例:
-P
フラグを使用して、カスタムプロパティを上書きすることもできます。
例: カスタムプロパティを使用した環境の指定方法
サーバーがローカルで実行されているか、本番環境で実行されているかに応じて、異なる処理を行いたい場合があります。これを実現するには、 application.conf / application.yaml にカスタムプロパティを追加し、サーバーがローカルで実行されているか本番環境で実行されているかに応じて値が異なる専用の環境変数で初期化します。以下の例では、KTOR_ENV
環境変数がカスタムのktor.environment
プロパティに割り当てられています。
実行時にktor.environment
の値にアクセスするには、 コードで設定を読み込み 、必要なアクションを実行します。
完全な例はこちらで確認できます。 engine-main-custom-environment 。