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 JARs了解如何使用 Ktor Gradle 插件创建和运行可执行的 fat JAR。
- 使用 Maven Assembly 插件创建 fat JARs示例项目: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 打开 Web 应用程序。你将看到任务管理器客户端页面,其中显示了用于筛选和添加新任务的三个表单,以及一个任务表。