Skip to content

Docker Compose

在本主題中,我們將向您展示如何在 Docker Compose 下執行 Ktor 伺服器應用程式。我們將使用在

整合資料庫
了解使用 Exposed SQL 函式庫將 Ktor 服務連接到資料庫儲存庫的過程。
教學課程中建立的專案,該專案使用 Exposed 連接到 PostgreSQL 資料庫,其中資料庫和網頁應用程式是分開執行的。

準備應用程式

提取資料庫設定

設定資料庫連接 教學課程中建立的專案使用硬編碼屬性來建立資料庫連接。

讓我們將 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 以開啟網頁應用程式。您應該會看到「任務管理器客戶端」頁面,顯示三個用於篩選和新增任務的表單,以及一個任務表格。

    一個顯示任務管理器客戶端的瀏覽器視窗