In this post, we’ll learn how to deploy a Node 12 application using the Functions Framework and Cloud Run.
Let’s say this.
- You learn that the Node Foundation releases cutting-edge Node 12.
- It includes cool new features like more performant async/await, faster HTTP parsing, and private fields. It’s still in development but you want to use it for your services.
- But Google Cloud Functions doesn’t support Node 12 yet.😢
- Blog about it?
- Or use Cloud Run 💨👟
Let’s learn how to do that!
Deploying a Node 12 Function to Cloud Run
Cloud Run (http://cloud.run) is a managed, serverless computing platform that abstracts away infrastructure management, so you can focus on building great applications.
Together, you can build scalable services atop Google Cloud in minutes.
First, Install Node 12
TJ has an incredibly simple Node module called
n for managing Node versions (i.e. switching between 10 and 12). Install the global CLI called
sudo npm i n -g
Then switch your Node version to Node 12:
sudo n 12
Verify your Node version
node -v # v12.7.0
Create a Node 12 Function
Create a new
Create a class in
greeter.js that uses Node 12 private fields:
Test the Functions Framework locally
You’ll want to test your service locally to ensure you code works.
npm ito install the Functions Framework.
npm startto start the framework
- Go to
http://localhost:8080/to see the server response locally.
So we got things working locally. But how do we deploy this to Google Cloud? Read on!
Create a Dockerfile
OK. I’ll be honest. If you asked me 6 months ago what Docker was, I’d mumble something about boxes, container ships, and a blue whale. But…
Docker is really nothing to be afraid of. It is an open platform for developing and running applications. To run an application, you’ll need to create some instructions for Docker to set up your environment.
Create a file called
Dockerfile (no file extension) as such:
We’ll tell Docker, use Node 12, copy our
package.json we defined above, install, copy our files, then start our server!
Deploy to Cloud Run
To deploy to Google’s Cloud Run, follow these 3 steps:
# Install gcloud beta services
gcloud components install beta# Set env var "GCP_PROJECT" to our project name
GCP_PROJECT=$(gcloud config list --format 'value(core.project)' 2>/dev/null)# Set our Cloud Run region (so we aren't prompted)
gcloud config set run/region us-central1
2️⃣ Upload your code and build the container
# Build and upload your image in Google Container Registry
gcloud builds submit --tag gcr.io/$GCP_PROJECT/helloworld
3️⃣ Deploy to Cloud Run
# Deploy your container to Cloud Run
gcloud beta run deploy --image gcr.io/$GCP_PROJECT/helloworld --platform managed
You’ll get a URL that looks like this: