Вс. Окт 25th, 2026

С помощью генератора https://start.ktor.io делаем простейшую заготовку backend проекта с плагином Routing и скачиваем на проект. Отрываем и собираем его в ANDROID STUDIO.


package com.example

import io.ktor.server.application.*
import io.ktor.server.engine.*
import io.ktor.server.cio.*
import com.example.plugins.*

fun main() {
    embeddedServer(CIO, port = 80, host = "0.0.0.0", module = Application::module)
        .start(wait = true)
}

fun Application.module() {
    configureRouting()
}

переходим по адресу http://127.0.0.1 и видим в браузере строку Hello World!.

Проект запущен

На удаленном сервере делаем папку test в нее добавляем папку app.

В папке test делаем 2 файла

Dockerfile

FROM openjdk:18-jdk-alpine
EXPOSE 80:80

RUN mkdir -p /app
COPY app/ /app/

WORKDIR /app

ENTRYPOINT ["java","-jar","com.example.ktor-sample-0.0.1.jar"]

docker-compose.yml

services:
  web:
    build: .
    ports:
      - "80:80"

Теперь нужно настроить в build.gradle.kts возможность создания jar файла для выполнения его на сервере с помощью кода

tasks.jar {
    manifest.attributes["Main-Class"] =  "com.example.ApplicationKt"
    val  dependencies = configurations
        .runtimeClasspath
        .get()
        .map(::zipTree) // OR .map { zipTree(it)  }
    from(dependencies)
    duplicatesStrategy =  DuplicatesStrategy.EXCLUDE
}

при создании проекта в папке проекта build\libs будет создан файл com.example.ktor-sample-0.0.1.jar, который нужно будет поместить в папку app на сервере

Теперь с помощью Docker поместим наш код в контейнер

docker compose up --build -d

И проверяем его работу в браузере набираем строку http://x.x.x.x и видим в браузере строку Hello World!.

все заготовка закончена

Код можно взять на Github

Запуск упакованного приложения

Перед развертыванием вашего приложения вам необходимо упаковать его одним из способов, описанных в разделе «Упаковка«. Запуск приложения Ktor из полученного пакета зависит от типа пакета и может выглядеть следующим образом:

  • Чтобы запустить сервер Ktor, упакованный в fat JAR, с настроенным портом и переопределить его, выполните следующую команду:
  • java -jar sample-app.jar -port=хххх

Упакуйте приложение

Плагин приложения предоставляет различные способы упаковки приложения, например, installDist задача устанавливает приложение со всеми зависимостями во время выполнения и сценариями запуска. Для создания полных архивов дистрибутива вы можете использовать задачи distZip и distTar.

В этом разделе мы будем использовать installDist:

  1. Откройте терминал.
  2. Запустите installDist задачу одним из следующих способов в зависимости от вашей операционной системы:Linux / macOSWindowsgradlew.bat installDistПлагин приложения создаст образ приложения в build/install/<project_name> папке.

Запустите приложение

Для запуска упакованного приложения:

  1. Перейдите в build/install/<project_name>/bin папку в терминале.
  2. В зависимости от вашей операционной системы запустите <project_name> или <project_name>.bat исполняемый файл, например:Linux / macOSWindowsktor-sample.bat
  3. Подождите, пока не появится следующее сообщение:[main] INFO Application - Responding at http://0.0.0.0:8080

От sapfir63