简体   繁体   中英

What is the right way of production deployment of nestjs application

I've developed simple nestjs rest services. Now I am planning to deploy my app. Please help me with efficient way of production deployment of nestjs app.

Own server

1) Checkout your project's repository on your server and run npm install .

2) Run npm run build which compiles your project to javascript:

rimraf dist && tsc -p tsconfig.build.json

3) Start your application with:

node dist/main.js

Serverless

zeit now

See this answer .

Heroku

1) Add the file Procfile to your project's root directory:

web: npm run start:prod

2) Add this line to your package.json 's scripts :

"heroku-postbuild": "echo Skip builds on Heroku"

3) Set the port in your main.ts (or in your ConfigService )

await app.listen(process.env.PORT || 3000);

If you create a new NestJS project via nest new project-name it will come with the needed scripts in package.json .

yarn build
yarn start:prod

The rest depends on where you want to host the app. NestJS will run on any generic-purpose hosting (Heroku, Vercel, AWS, etc).

If you want to get started with low-config and for free you could try Heroku with the following Dockerized setup:

Dockerfile.prod

FROM node:14-alpine

WORKDIR /app

COPY package.json yarn.lock ./
RUN yarn install

COPY . /app

RUN yarn build

heroku.yml

build:
  docker:
    web: Dockerfile.prod
run:
  web: yarn start:prod

Once the app is created run

heroku git:remote --app <app-name>
heroku stack:set container

In your bootstrap function ( main.ts ) use the PORT env var:

await app.listen(process.env.PORT || 3000);

If you're using a DB you have to set that up as well.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM