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 上執行,應用程式需要將所有必要的檔案部署到容器中。根據您使用的建置系統,有不同的外掛程式可以完成此操作:

在我們的範例中,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 應用程式。您應該會看到工作管理員用戶端頁面,其中顯示了三個用於篩選和新增新任務的表單,以及一個任務表格。

    顯示工作管理員用戶端的瀏覽器視窗