Skip to content

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 上运行,应用程序需要将所有必需的文件部署到 容器中。根据你使用的构建系统, 有不同的插件可以完成此操作:

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

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 应用程序。你将看到任务管理器客户端页面,其中显示了用于筛选和添加新任务的三个表单,以及一个任务表。

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