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:
Clone a Ktor documentation repository and open the codeSnippets project.
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:
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:
Open the
settings.gradle.ktsfile 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}") } } } }Open
build.gradle.ktsand apply the plugin in thepluginsblock:plugins { id("com.google.cloud.tools.appengine") version "2.8.0" }Add the
appengineblock with the following settings in thebuild.gradle.ktsfile: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:
Create the
appenginedirectory insidesrc/main.Inside this directory, create the
app.yamlfile and add the following content (replacegoogle-appengine-standardwith your project's name):runtime: java21 entrypoint: 'java -jar google-appengine-standard-all.jar'The
entrypointoption 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:
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-enginename:gcloud projects create ktor-sample-app-engine --set-as-defaultCreate an App Engine application for the Cloud project:
gcloud app createTo deploy the application, execute the
appengineDeployGradle 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.