Base images are composed of an operating system stack and a language runtime:
Astackis made up of a Linux distribution version
and system packages, such as OpenSSL andcurl.
A language runtime is the specific version of the programming language used
by your application.
Cloud Run supports multiple language runtimes, each of which is
available through container base images provided byGoogle Cloud's buildpacks. Language runtimes are
supported only as long as they are supported by their respective open source
communities.
It is the developer's responsibility to upgrade services to newer
language runtimes before it reaches end of support. Refer to the
Cloud Runruntime lifecyclefor details.
The Cloud Run lifecycle policy does not apply to containers built outside
of Cloud Run.
Using language runtimes
Cloud Run language runtimes are used for the following:
Security and maintenance updates are available for generally available
language runtimes. You can apply these updates automatically or manually depending on how
you configureautomatic security updates.
Automatic security updates are enabled by default when deploying functions and
services to Cloud Run.
There are three methods for specifying a base image:
RUNTIME_ID: Gives you the base image for the specified
language using its default stack. The base image will be taken from a
repository in the sameREGIONwhere your service is
deployed. We recommend you specify theRUNTIME_IDfor most cases.
STACK/RUNTIME_ID: An alias for the full
base image path. The base image will be taken from a repository in the sameREGIONwhere your service is deployed. Use this option
if you need a specific system package in thestack.
REGION-docker.pkg.dev/serverless-runtimes/STACK/runtimes/RUNTIME_ID:
The full base image path. Use this option if you want full control over the
specific base image and the region where it's downloaded from.
For the three methods for specifying a base image, replace:
REGIONwith the preferred region, for exampleeurope-west1.
STACKwith the preferred operating systemstack, for examplegoogle-22-full.
RUNTIME_IDwith the language runtime ID used by your function, for
examplenodejs22.
For example, to reference the full base image path for the latest Node.js 20
base image using thegoogle-22-fullstack, hosted ineurope-west1,
use the following URL:
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-09-04 UTC."],[],[],null,["# Supported language runtimes and base images\n\nThis page describes the supported language runtimes and base images for\ndeploying [services](/run/docs/deploying-source-code) or\n[functions](/run/docs/deploy-functions) from source, and\n[container images built on scratch](/run/docs/configuring/services/automatic-base-image-updates#scratch).\n\nBase images are composed of an operating system stack and a language runtime:\n\n- A [stack](/docs/buildpacks/stacks) is made up of a Linux distribution version and system packages, such as OpenSSL and `curl`.\n- A language runtime is the specific version of the programming language used by your application.\n\nCloud Run supports multiple language runtimes, each of which is\navailable through container base images provided by\n[Google Cloud's buildpacks](/docs/buildpacks/overview). Language runtimes are\nsupported only as long as they are supported by their respective open source\ncommunities.\n\nIt is the developer's responsibility to upgrade services to newer\nlanguage runtimes before it reaches end of support. Refer to the\nCloud Run [runtime lifecycle](/run/docs/runtime-support) for details.\n\nThe Cloud Run lifecycle policy does not apply to containers built outside\nof Cloud Run.\n\nUsing language runtimes\n-----------------------\n\nCloud Run language runtimes are used for the following:\n\n- Deploying [functions](/run/docs/deploy-functions) and [services](/run/docs/deploying-source-code)\n- Enabling [automatic security updates](/run/docs/configuring/services/automatic-base-image-updates)\n- As base images for [building containers](/run/docs/building/containers)\n\nSecurity and maintenance updates\n--------------------------------\n\nSecurity and maintenance updates are available for generally available\nlanguage runtimes. You can apply these updates automatically or manually depending on how\nyou configure [automatic security updates](/run/docs/configuring/services/automatic-base-image-updates).\nAutomatic security updates are enabled by default when deploying functions and\nservices to Cloud Run.\n\nHow to obtain base images\n-------------------------\n\nBase images are hosted in every region where\n[Artifact Registry is available](/artifact-registry/docs/repositories/repo-locations#location-r).\n\nThere are three methods for specifying a base image:\n\n- \u003cvar translate=\"no\"\u003eRUNTIME_ID\u003c/var\u003e: Gives you the base image for the specified language using its default stack. The base image will be taken from a repository in the same \u003cvar translate=\"no\"\u003eREGION\u003c/var\u003e where your service is deployed. We recommend you specify the `RUNTIME_ID` for most cases.\n- \u003cvar translate=\"no\"\u003eSTACK\u003c/var\u003e`/`\u003cvar translate=\"no\"\u003eRUNTIME_ID\u003c/var\u003e: An alias for the full base image path. The base image will be taken from a repository in the same \u003cvar translate=\"no\"\u003eREGION\u003c/var\u003e where your service is deployed. Use this option if you need a specific system package in the [stack](/docs/buildpacks/stacks).\n- \u003cvar translate=\"no\"\u003eREGION\u003c/var\u003e`-docker.pkg.dev/serverless-runtimes/`\u003cvar translate=\"no\"\u003eSTACK\u003c/var\u003e`/runtimes/`\u003cvar translate=\"no\"\u003eRUNTIME_ID\u003c/var\u003e: The full base image path. Use this option if you want full control over the specific base image and the region where it's downloaded from.\n\nFor the three methods for specifying a base image, replace:\n\n- \u003cvar translate=\"no\"\u003eREGION\u003c/var\u003e with the preferred region, for example `europe-west1`.\n- \u003cvar translate=\"no\"\u003eSTACK\u003c/var\u003e with the preferred operating system [stack](/docs/buildpacks/stacks), for example `google-22-full`.\n- \u003cvar translate=\"no\"\u003eRUNTIME_ID\u003c/var\u003e with the language runtime ID used by your function, for example `nodejs22`.\n\nFor example, to reference the full base image path for the latest Node.js 20\nbase image using the `google-22-full` stack, hosted in `europe-west1`,\nuse the following URL:\n\n`europe-west1-docker.pkg.dev/serverless-runtimes/google-22-full/runtimes/nodejs22`\n\n### Node.js\n\n### Python\n\n### Go\n\n| **Note:** Go's [release policy](https://go.dev/doc/devel/release#policy) states that each major Go release is supported until there are two newer major releases. Thus, depending on when newer versions of Go are made publicly available, key dates such as end of support, deprecation, and decommission might be postponed.\n\n### Java\n\n### Ruby\n\n### PHP\n\n### .NET\n\n\u003cbr /\u003e"]]