Docker Compose
Docker Compose
初期プロジェクト : tutorial-server-db-integration
最終プロジェクト : tutorial-server-docker-compose
このトピックでは、Docker Composeの下でサーバーKtorアプリケーションを実行する方法を紹介します。ここでは、
アプリケーションの準備
データベース設定の抽出
データベース接続の設定チュートリアルで作成されたプロジェクトでは、データベース接続を確立するためにハードコードされた属性を使用しています。
PostgreSQLデータベースの接続設定を
src/main/resourcesにあるapplication.yamlファイルを開き、以下のように
ktorグループの外側にstorageグループを追加します。yamlこれらの設定は、後でcompose.ymlファイルで構成されます。
src/main/kotlin/com/example/plugins/にあるDatabases.ktファイルを開き、設定ファイルからストレージ設定をロードするように
configureDatabases()関数を更新します。kotlinconfigureDatabases()関数はApplicationConfigを受け取るようになり、config.propertyを使用してカスタム設定をロードします。src/main/kotlin/com/example/にあるApplication.ktファイルを開き、アプリケーション起動時に接続設定をロードするために
environment.configをconfigureDatabases()に渡します。kotlin
Ktorプラグインの設定
Dockerで実行するには、アプリケーションに必要なすべてのファイルがコンテナにデプロイされている必要があります。使用しているビルドシステムに応じて、これを実現するためのさまざまなプラグインがあります。
- Ktor Gradleプラグインを使用したfat JARの作成Ktor Gradleプラグインを使用して実行可能なfat JARを作成して実行する方法を学びます。
- Maven Assemblyプラグインを使用したfat JARの作成サンプルプロジェクト: tutorial-server-get-started-maven
この例では、Ktorプラグインはすでにbuild.gradle.ktsファイルに適用されています。
Dockerの設定
Dockerイメージの準備
アプリケーションをDocker化(Dockerize)するには、プロジェクトのルートディレクトリに新しいDockerfileを作成し、以下の内容を挿入します。
TIP
このマルチステージビルド(multi-stage build)の仕組みの詳細については、Dockerイメージの準備を参照してください。この例では Amazon Corretto の Docker イメージを使用していますが、以下のような他の適切な代替イメージに置き換えることもできます。
Docker Composeの設定
プロジェクトのルートディレクトリに新しいcompose.ymlファイルを作成し、以下の内容を追加します。
webサービスは、イメージ内にパッケージ化されたKtorアプリケーションを実行するために使用されます。dbサービスは、postgresイメージを使用して、タスクを保存するためのktor_tutorial_dbデータベースを作成します。
サービスのビルドと実行
以下のコマンドを実行して、Ktorアプリケーションを含むfat JARを作成します。
Bashdocker compose upコマンドを使用して、イメージをビルドしコンテナを起動します。Bash- Docker Composeがイメージのビルドを完了するまで待ちます。
http://localhost:8080/static/index.htmlにアクセスしてWebアプリケーションを開きます。タスクのフィルタリングと新規追加のための3つのフォーム、およびタスクのテーブルが表示されたTask Manager Clientページが表示されるはずです。

