Deno on Cloud Run
🦕 Deno (deno.land) is a secure TypeScript runtime built on V8 and Rust, created by Ryan Dahl, the creator of Node.js.
🏃 Cloud Run (cloud.run) is a fully managed compute platform that automatically scales your stateless containers.
In this blogpost, we’ll show you how to containerize and deploy a simple Deno application on Cloud Run, running a serverless, HTTPS, TypeScript service.
Create a Deno App
Let’s create a web application in TypeScript for Deno:
Install Deno
Install Deno on your system using the instructions on the official site:
curl -fsSL https://deno.land/x/install/install.sh | shCreate a main.ts file
Create a simple HTTP server using Deno’s standard library:
You’ll notice non-Node features like import and top-level for await. Neat!
You might notice some code editors like VS Code issue warnings for Deno features like top-level await or TS imports (GitHub issue). They can be ignored.
Run Locally
Before proceeding, let’s ensure our server works by running locally:
deno run --allow-env --allow-net main.tsHit localhost:8080 to see Hello, Deno!
Create a Dockerfile
Let’s containerize this application.
Give Docker instructions for creating our image via a simple Dockerfile:
To test this Dockerfile, we can run our service locally with this command:
docker build -t app . && docker run -it --init -p 8080:8080 appDeploy to Cloud Run
Now that we’ve created our main.ts and Dockerfile files, we’re ready to deploy to Cloud Run.
Build the container (hellodeno) and deploy to Cloud Run (fully managed):
GCP_PROJECT=$(gcloud config list --format 'value(core.project)' 2>/dev/null)
gcloud builds submit --tag gcr.io/$GCP_PROJECT/hellodeno
gcloud run deploy hellodeno --image gcr.io/$GCP_PROJECT/hellodeno --platform managed --allow-unauthenticatedYou’ll get a URL from the deployed service:
https://deno-ff-q7vieseilq-ue.a.run.appVoila! 棒棒的!
This sample app is also a Github sample in the Knative Docs.
Next Steps
Thanks for reading! Check out these related posts:
