About Custom runtimes

If you'd like to use an alternative implementation of Python, Java, Node.js, Go, Ruby, PHP, .NET or you write code in any other language, then custom runtimes are for you. Custom runtimes allow you to define new runtime environments, which might include additional components like language interpreters or application servers.

To create a custom runtime, you create a Dockerfile with a base image of your choice, and then add the docker commands that build your desired runtime environment. It's important to remember that you are responsible for ensuring that the components that you specified in your Dockerfile are compatible and configured to deliver the desired performance.

When you use a custom runtime, you must write your application code to handle certain flexible environment life-cycle and health checking requests. Start by reading about how to build a custom runtime before you begin developing your application.

Applications that use custom runtimes take advantage of all the various Google Cloud services by using the public REST APIs or client libraries, such as the App Engine Admin API and the Google Client Libraries.

Use the following table to understand how a custom runtime compares to the existing set of App Engine runtimes:

Feature Flexible runtime Custom runtime
Dockerfile Default file supplied automatically by the SDK Hand-written by the developer
Dockerfile modifications permitted Yes Yes
Languages Python, Java, Node.js, Go, Ruby, PHP, .NET Any software that can service HTTP requests