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.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}") } } } }Open
build.gradle.kts
and apply the plugin in theplugins
block:plugins { id("com.google.cloud.tools.appengine") version "2.8.0" }Add the
appengine
block with the following settings in thebuild.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:
Create the
appengine
directory insidesrc/main
.Inside this directory, create the
app.yaml
file and add the following content (replacegoogle-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:
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-defaultCreate an App Engine application for the Cloud project:
gcloud app createTo 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.