Google App Engine#
This example uses App Engine to run the application in a completely managed serverless service, with automatic scaling.
Prerequisites#
Before starting, follow the SQL and Secret Manager guides to create the database and configuration.
Using Cloud Console#
Go to Cloud Console and make sure the appropriate project is selected in the header menu.
In the side menu, go to IAM & Admin > Service Accounts:
- Click Create Service Account.
 - Set 
karaplanas the Service Account name and ID. - Click Create and continue.
 - Select the following Roles:
- Secret Manager Secret Accessor
 - Cloud SQL Client
 
 - Click Done.
 
In the side menu, go to App Engine:
- Click Create Application.
 - Select your preferred Region (e.g. 
europe-west). - Select the previously created 
karaplanService Account. 
If you have a custom domain name:
- From the Settings menu, go to the Custom Domains tab.
 - Click Add a custom domain.
 - Select your verified domain and click Continue.
 - Enter the fully-qualified domain name to use.
 - Click Save mappings.
 - Add the CNAME record to your domain as instructed.
 
Finally, follow the instructions in the Deploy the application section below.
Using Cloud Shell / SDK#
Use the following commands in Cloud Shell or anywhere the Cloud SDK is installed:
# Set variables, adjust them as needed
PROJECT_ID=$(gcloud config get-value project)
REGION="europe-west"
# Create Service Account and grant permissions
gcloud iam service-accounts create karaplan
gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:karaplan@$PROJECT_ID.iam.gserviceaccount.com" --role=roles/secretmanager.secretAccessor
gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:karaplan@$PROJECT_ID.iam.gserviceaccount.com" --role=roles/cloudsql.client
# Create app in region (warning: can't be changed later!)
gcloud app create --region=$REGION --service-account=karaplan@$PROJECT_ID.iam.gserviceaccount.com
# If the app already exists, update the Service Account if necessary
gcloud app update --service-account=karaplan@$PROJECT_ID.iam.gserviceaccount.com
If you have a custom domain name:
DOMAIN=your.custom.domain
# Create domain mapping
gcloud app domain-mappings create $DOMAIN --certificate-management=AUTOMATIC
# Add the CNAME record to your domain as instructed.
Finally, follow the instructions in the Deploy the application section below.
Using Terraform#
This directory contains a Terraform module to provision some of the resources automatically. See the main.tf, variables.tf files for more information.
Please refer to the Terraform Cloud Run Deployment guide for a full example.
Finally, follow the instructions in the Deploy the application section below.
Deploy the application#
Use the following commands in Cloud Shell or anywhere the Cloud SDK is installed:
# Get app source code if necessary
git clone https://github.com/fcrespel/karaplan.git
cd karaplan
# Build and deploy app with Maven
./mvnw -Dfrontend-build -Dappengine-build -DskipTests package appengine:deploy
After completion, the application should be available at https://<project-id>.ew.r.appspot.com