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.4.2" }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/appengine
.Inside this directory, create the
app.yaml
file and add the following content:runtime: java11 entrypoint: 'java -jar google-appengine-standard-1.0-SNAPSHOT-all.jar'The
entrypoint
option contains a command used to run a fat JAR generated for the application.
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.