Docker Compose
初期プロジェクト : tutorial-server-db-integration
最終プロジェクト : tutorial-server-docker-compose
このトピックでは、サーバーKtorアプリケーションをDocker Composeで実行する方法を説明します。
アプリケーションを準備する
データベース設定の抽出
データベース接続を設定するチュートリアルで作成されたプロジェクトは、データベース接続を確立するためにハードコードされた属性を使用しています。
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の作成Learn how to create and run an executable fat JAR using the Ktor Gradle plugin.
- Maven Assemblyプラグインを使用したfat JARの作成Sample project: tutorial-server-get-started-maven
この例では、Ktorプラグインはbuild.gradle.ktsファイルにすでに適用されています。
Dockerの構成
Dockerイメージの準備
アプリケーションをDocker化するには、プロジェクトのルートディレクトリに新しいDockerfileを作成し、次のコンテンツを挿入します。
TIP
このマルチステージビルドの仕組みの詳細については、Dockerイメージを準備するを参照してください。この例ではAmazon Corretto Dockerイメージを使用していますが、以下のようないくつかの適切な代替品と置き換えることができます。
Docker Composeの構成
プロジェクトのルートディレクトリに新しいcompose.ymlファイルを作成し、次のコンテンツを追加します。
web
サービスは、イメージ内にパッケージされたKtorアプリケーションを実行するために使用されます。db
サービスは、postgres
イメージを使用して、タスクを保存するためのktor_tutorial_db
データベースを作成します。
サービスのビルドと実行
Ktorアプリケーションを含むfat JARを作成するために、次のコマンドを実行します。
Bashイメージをビルドしてコンテナを起動するために、
docker compose up
コマンドを使用します。Bash- Docker Composeがイメージのビルドを完了するまで待ちます。
ウェブアプリケーションを開くには、http://localhost:8080/static/index.htmlに移動します。タスクマネージャークライアントページが表示され、タスクのフィルタリングと新規追加のための3つのフォームと、タスクのテーブルが表示されるはずです。