Introduction

NestJS is a progressive Node.js framework for building efficient, reliable and scalable server-side applications. In this article, we are going to deploy a freshly created NestJS API to Valyent.

Prerequisites

  • a UNIX-like system (see WSL if you are using Windows), in order to use the Valyent CLI
  • a Valyent account, with a registered payment method (you can sign up here)
  • NodeJS and NPM installed on your machine

Installing the CLI

curl -L https://cli.valyent.cloud/install.sh | sh

You can inspect the installation script here and the GitHub repository.

Authenticating

valyent auth login

Initializing the project

In the first place, we are going to set up a new NestJS project. To do that, we’ll need the NestJS CLI, which we can install this this way :

npm i -g @nestjs/cli

Then, we can scaffold the NestJS project :

nest new <some_project_name> && cd <some_project_name>

Now, we can initialize the valyent.toml configuration file, that allows to link the local codebase, to a Valyent application :

valyent init

This command will ask you to select/create a project and an associated application.

Adding the Dockerfile

Let’s add a Dockerfile so that Valyent can build a Docker image for your application.

touch Dockerfile

We can fill it this way :

FROM node:20

WORKDIR /app

COPY package*.json ./

RUN npm ci

COPY . .

RUN npm run build

CMD [ "node", "dist/main.js" ]

Deploy the project

To expose the application’s port, we need to set up the PORT environment variable :

valyent env set PORT=3000

Then, we can deploy the application :

valyent deploy

Once the deployment is finished, type :

valyent open

to see your NestJS application in your browser.