Skip to content

Docker Compose

Docker Compose

在本主题中,我们将向您展示如何在 Docker Compose 下运行 Ktor 服务器应用程序。我们将使用在

集成数据库
通过 Exposed SQL 库了解将 Ktor 服务连接到数据库仓库的过程。
教程中创建的项目,该项目使用 Exposed 连接到 PostgreSQL 数据库,其中数据库和 Web 应用程序分别运行。

准备应用程序

提取数据库设置

配置数据库连接 教程中创建的项目使用硬编码属性来建立数据库连接。

让我们将 PostgreSQL 数据库的连接设置提取到

自定义配置组
了解如何在配置文件中配置各种服务器参数。

  1. 打开 src/main/resources 中的 application.yaml 文件,并在 ktor 组之外添加 storage 组,如下所示:

    yaml

    这些设置稍后将在 compose.yml 文件中进行配置。

  2. 打开 src/main/kotlin/com/example/plugins/ 中的 Databases.kt 文件,并更新 configureDatabases() 函数,以从配置文件加载存储设置:

    kotlin

    configureDatabases() 函数现在接受 ApplicationConfig,并使用 config.property 加载自定义设置。

  3. 打开 src/main/kotlin/com/example/ 中的 Application.kt 文件,并将 environment.config 传递给 configureDatabases(),以便在应用程序启动时加载连接设置:

    kotlin

配置 Ktor 插件

为了在 Docker 上运行,应用程序需要将所有必需的文件部署到容器。根据您使用的构建系统,有不同的插件可以实现这一点:

在我们的示例中,build.gradle.kts 文件中已应用了 Ktor 插件。

kotlin

配置 Docker

准备 Docker 镜像

要将应用程序 Docker 化,请在项目的根目录中创建一个新的 Dockerfile,并插入以下内容:

Docker

TIP

有关此多阶段构建工作原理的更多信息,请参阅 准备 Docker 镜像

本示例使用的是 Amazon Corretto Docker 镜像,但您可以将其替换为任何其他合适的替代品,例如:

配置 Docker Compose

在项目的根目录中,创建一个新的 compose.yml 文件并添加以下内容:

yaml
  • web 服务用于运行打包在 镜像 内的 Ktor 应用程序。
  • db 服务使用 postgres 镜像创建 ktor_tutorial_db 数据库以存储任务。

构建并运行服务

  1. 运行以下命令以创建包含 Ktor 应用程序的 fat JAR

    Bash
  2. 使用 docker compose up 命令构建镜像并启动容器:

    Bash
  3. 等待 Docker Compose 完成镜像构建。
  4. 导航至 http://localhost:8080/static/index.html 以打开 Web 应用程序。您应该会看到“任务管理器客户端”页面,其中显示了三个用于筛选和添加新任务的表单,以及一个任务表。

    显示任务管理器客户端的浏览器窗口