If you'd like to use an alternative implementation of Java, Python, Node.js, or Go, or write code in any other language, 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 supply a Dockerfile with a base image of your choice, and add other docker commands as needed to build the desired runtime environment. Remember that you are responsible to ensure that the components you've included in your Dockerfile are compatible and are configured to deliver the desired performance.
When you use a custom runtime, you must write the application code to handle certain flexible environment life-cycle and health checking requests. Read about Building a Custom Runtime before you start developing.
Applications using custom runtimes can take advantage of many Cloud Platform services using the public REST APIs, or client libraries, when they are available.
The following table compares the two kinds of 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, and Go||Any software that can service HTTP requests|