Deploy a containerized application to Cloud Run using Cloud Build
This page shows you how to use Cloud Build to deploy a containerized application to Cloud Run.
To follow step-by-step guidance for this task directly in the Cloud Shell Editor, click Guide me:
Before you begin
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Build, Cloud Run, Artifact Registry, and Compute Engine APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Build, Cloud Run, Artifact Registry, and Compute Engine APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
Grant permissions
Cloud Build requires Cloud Run Admin and IAM Service Account User permissions before it can deploy an image to Cloud Run.
Open a terminal window.
Set environment variables to store your project ID and project number:
PROJECT_ID=$(gcloud config list --format='value(core.project)') PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')
Grant the Cloud Run Admin role to the Cloud Build service account:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member=serviceAccount:$PROJECT_NUMBER@cloudbuild.gserviceaccount.com \ --role=roles/run.admin
Grant the IAM Service Account User role to the Cloud Build service account for the Cloud Run runtime service account:
gcloud iam service-accounts add-iam-policy-binding \ $PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --member=serviceAccount:$PROJECT_NUMBER@cloudbuild.gserviceaccount.com \ --role=roles/iam.serviceAccountUser
Deploy a prebuilt image
You can configure Cloud Build to deploy a prebuilt image that is stored in Artifact Registry to Cloud Run.
To deploy a prebuilt image:
Open a terminal window (if not already open).
Create a new directory named
helloworld
and navigate into it:mkdir helloworld cd helloworld
Create a file named
cloudbuild.yaml
with the following contents. This file is the Cloud Build config file. It contains instructions for Cloud Build to deploy the image namedus-docker.pkg.dev/cloudrun/container/hello
on the Cloud Run service namedcloudrunservice
.Deploy the image by running the following command:
gcloud builds submit --region=us-west2 --config cloudbuild.yaml
When the build is complete, you will see an output similar to the following:
DONE
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
ID CREATE_TIME DURATION SOURCE IMAGES STATUS
784653b2-f00e-4c4b-9f5f-96a5f115bef4 2020-01-23T14:53:13+00:00 23S gs://cloudrunqs-project_cloudbuild/source/1579791193.217726-ea20e1c787fb4784b19fb1273d032df2.tgz - SUCCESS
You've just deployed the image hello
to Cloud Run.
Run the deployed image
Open the Cloud Run page in the Google Cloud console:
Select your project and click Open.
You will see the Cloud Run Services page.
In the table, locate the row with the name cloudrunservice, and click cloudrunservice.
The Service details page for cloudrunservice is displayed.
To run the image that you deployed on cloudrunservice, click the URL: