An example of deploying a custom Docker image into Google Cloud Run service using TypeScript. Our image builds a simple HelloWorld web application in Ruby. You may change it to any language and runtime that can run on Linux and serve HTTP traffic.
- Ensure you have the latest Node.js and NPM
- Install the Pulumi CLI
- Configure Pulumi to access your GCP account
- Install Docker
- Enable Docker to deploy to Google Container Registry with
gcloud auth configure-docker
-
Restore NPM dependencies:
$ npm install
-
Create a new stack:
$ pulumi stack init dev
-
Configure your GCP project and region:
$ pulumi config set gcp:project <projectname> $ pulumi config set gcp:region <region>
-
Run
pulumi up
to preview and deploy changes:$ pulumi up Previewing update (dev): ... Updating (dev): Type Name Status + pulumi:pulumi:Stack gcp-cloudrun-dev created + ├─ docker:image:Image ruby-app created + ├─ gcp:projects:Service EnableCloudRun created + ├─ gcp:cloudrun:Service hello created + ├─ gcp:cloudrun:Service ruby created + ├─ gcp:cloudrun:IamMember hello-everyone created + └─ gcp:cloudrun:IamMember ruby-everyone created Outputs: helloUrl: "https://hello-a28eea2-q1wszdxb2b-ew.a.run.app" rubyUrl : "https://ruby-420a973-q1wszdxb2b-ew.a.run.app" Resources: + 7 created Duration: 3m37s
-
Check the deployed Cloud Run endpoint:
$ curl "$(pulumi stack output rubyUrl)" Hello Pulumi!
-
Clean up your GCP and Pulumi resources:
$ pulumi destroy ... $ pulumi stack rm dev ...