Ktor 3.0.0-beta-2 Help

Google App Engine

In this tutorial, we'll show you how to prepare and deploy a Ktor project to a Google App Engine standard environment. This tutorial uses the engine-main sample project as a starting project.

Prerequisites

Before starting this tutorial, you need to perform the steps below:

  • Register in Google Cloud Platform.

  • Install and initialize the Google Cloud SDK.

  • Install the App Engine extension for Java with the following command:

    gcloud components install app-engine-java

Clone a sample application

To open a sample application, follow the steps below:

  1. Clone a Ktor documentation repository and open the codeSnippets project.

  2. Open the engine-main module.

Prepare an application

Step 1: Apply the Shadow plugin

This tutorial shows how to deploy the application to Google App Engine using a fat JAR. To generate fat JARs, you need to apply the Shadow plugin. Open the build.gradle.kts file and add the plugin to the plugins block:

plugins { id("com.github.johnrengelman.shadow") version "7.1.2" }

Step 2: Configure the App Engine plugin

The Google App Engine Gradle plugin provides tasks to build and deploy Google App Engine applications. To use this plugin, follow the steps below:

  1. Open the settings.gradle.kts file and insert the following code to reference a plugin from the Central Maven repository:

    pluginManagement { repositories { gradlePluginPortal() mavenCentral() maven("https://maven.pkg.jetbrains.space/public/p/ktor/eap") } resolutionStrategy { eachPlugin { if (requested.id.id.startsWith("com.google.cloud.tools.appengine")) { useModule("com.google.cloud.tools:appengine-gradle-plugin:${requested.version}") } } } }
  2. Open build.gradle.kts and apply the plugin in the plugins block:

    plugins { id("com.google.cloud.tools.appengine") version "2.8.0" }
  3. Add the appengine block with the following settings in the build.gradle.kts file:

    import com.google.cloud.tools.gradle.appengine.appyaml.AppEngineAppYamlExtension configure<AppEngineAppYamlExtension> { stage { setArtifact("build/libs/${project.name}-all.jar") } deploy { version = "GCLOUD_CONFIG" projectId = "GCLOUD_CONFIG" } }

Step 3: Configure App Engine settings

You configure App Engine settings for your application in the app.yaml file:

  1. Create the appengine directory inside src/main.

  2. Inside this directory, create the app.yaml file and add the following content (replace google-appengine-standard with your project's name):

    runtime: java21 entrypoint: 'java -jar google-appengine-standard-all.jar'

    The entrypoint option contains a command used to run a fat JAR generated for the application.

    Further documentation on supported configuration options can be found from the Google AppEngine documentation.

Deploy an application

To deploy the application, open the terminal and follow the steps below:

  1. First, create a Google Cloud project, which is a top-level container holding application resources. For example, the command below creates a project with the ktor-sample-app-engine name:

    gcloud projects create ktor-sample-app-engine --set-as-default
  2. Create an App Engine application for the Cloud project:

    gcloud app create
  3. To deploy the application, execute the appengineDeploy Gradle task...

    ./gradlew appengineDeploy

    ... and wait until Google Cloud builds and publishes the application:

    ...done. Deployed service [default] to [https://ktor-sample-app-engine.ew.r.appspot.com]

You can find the completed example here: google-appengine-standard.

Last modified: 30 August 2024