Deploying to Google Cloud Run
Deploy your RivetKit app to Google Cloud Run.
Steps
Prerequisites
- Google Cloud project with Cloud Run and Artifact Registry enabled
gcloudCLI authenticated (gcloud auth login) and project set (gcloud config set project YOUR_PROJECT)- Artifact Registry repository or Container Registry enabled
- Your RivetKit app
- If you don’t have one, see the Quickstart page or our Examples
- Access to the Rivet Cloud or a self-hosted Rivet Engine
Package Your App
Create a Dockerfile in your project root:
FROM node:20-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --omit=dev
COPY . .
ENV PORT=8080
CMD ["node", "server.js"]
Build and Push the Image
Use Cloud Build to build and push the image. Replace the region and repository with your own.
gcloud builds submit --tag us-central1-docker.pkg.dev/YOUR_PROJECT/rivetkit-app/rivetkit-app:latest
Set Environment Variables
After creating your project on the Rivet dashboard, select Google Cloud Run as your provider. You’ll be provided RIVET_ENDPOINT and RIVET_PUBLIC_ENDPOINT environment variables to use when deploying.
Cloud Run is a serverless platform, so also set RIVETKIT_RUNTIME_MODE=serverless. Without it the app defaults to Runner mode, which does not fit Cloud Run’s request-driven model.
Deploy to Cloud Run
Deploy the service to Cloud Run, passing the Rivet environment variables. Adjust the region and image as needed.
gcloud run deploy rivetkit-app \
--image us-central1-docker.pkg.dev/YOUR_PROJECT/rivetkit-app/rivetkit-app:latest \
--region us-central1 \
--allow-unauthenticated \
--min-instances 1 \
--set-env-vars RIVET_ENDPOINT=<your-rivet-endpoint>,RIVET_PUBLIC_ENDPOINT=<your-rivet-public-endpoint>,RIVETKIT_RUNTIME_MODE=serverless
Connect to Rivet
- After deployment, note the service URL (e.g.
https://rivetkit-app-xxxxx-uc.a.run.app) - On the Rivet dashboard, paste your URL with the
/api/rivetpath into the connect form (e.g.https://rivetkit-app-xxxxx-uc.a.run.app/api/rivet) - Click “Done”
Verify
Confirm the service is running:
gcloud run services describe rivetkit-app --region us-central1 --format 'value(status.conditions[?type="Ready"].status)'
Your app should appear as connected on the Rivet dashboard once the service reports ready.