С помощью генератора 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:
- Откройте терминал.
- Запустите
installDistзадачу одним из следующих способов в зависимости от вашей операционной системы:Linux / macOSWindowsgradlew.bat installDistПлагин приложения создаст образ приложения вbuild/install/<project_name>папке.
Запустите приложение
Для запуска упакованного приложения:
- Перейдите в
build/install/<project_name>/binпапку в терминале. - В зависимости от вашей операционной системы запустите
<project_name>или<project_name>.batисполняемый файл, например:Linux / macOSWindowsktor-sample.bat - Подождите, пока не появится следующее сообщение:
[main] INFO Application - Responding at http://0.0.0.0:8080