Back to Rivet

Deploying to Google Cloud Run

website/src/content/docs/connect/gcp-cloud-run.mdx

2.2.12.3 KB
Original Source

Steps

<Steps> <Step title="Prerequisites">
  • Google Cloud project with Cloud Run and Artifact Registry enabled
  • gcloud CLI authenticated (gcloud auth login) and project set (gcloud config set project YOUR_PROJECT)
  • Artifact Registry repository or Container Registry enabled
  • Your RivetKit app
  • Access to the Rivet Cloud or a self-hosted Rivet Engine
</Step> <Step title="Package Your App">

Create a Dockerfile in your project root:

dockerfile
FROM node:20-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --omit=dev
COPY . .
ENV PORT=8080
CMD ["node", "server.js"]
</Step> <Step title="Build and Push the Image">

Use Cloud Build to build and push the image. Replace the region and repository with your own.

bash
gcloud builds submit --tag us-central1-docker.pkg.dev/YOUR_PROJECT/rivetkit-app/rivetkit-app:latest
</Step> <Step title="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.

</Step> <Step title="Deploy to Cloud Run">

Deploy the service to Cloud Run, passing the Rivet environment variables. Adjust the region and image as needed.

bash
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>
</Step> <Step title="Connect to Rivet">
  1. After deployment, note the service URL (e.g. https://rivetkit-app-xxxxx-uc.a.run.app)
  2. On the Rivet dashboard, paste your URL with the /api/rivet path into the connect form (e.g. https://rivetkit-app-xxxxx-uc.a.run.app/api/rivet)
  3. Click "Done"
</Step> <Step title="Verify">

Confirm the service is running:

bash
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.

</Step> </Steps>