我开发了简单的NestJS REST服务。现在我正在计划部署我的应用程序。请帮我找出一种有效的NestJS应用程序生产部署方式。
我开发了简单的NestJS REST服务。现在我正在计划部署我的应用程序。请帮我找出一种有效的NestJS应用程序生产部署方式。
1)将您的项目存储库检出到您的服务器并运行 npm install
。
2)运行 npm run build
,它将编译您的项目为JavaScript:
rimraf dist && tsc -p tsconfig.build.json
3) 以以下方式启动您的应用程序:
node dist/main.js
请参考此答案.
1) 将文件Procfile
添加到您的项目根目录中:
web: npm run start:prod
2) 将此行添加到package.json
的scripts
中:
"heroku-postbuild": "echo Skip builds on Heroku"
3) 在你的 main.ts
(或者在你的 ConfigService
) 中设置端口。
await app.listen(process.env.PORT || 3000);
npm run build
命令,系统创建了一个名为 dist
的文件夹。但是当我执行 node dist/main.js
命令时,命令提示显示 Error: Cannot find module 'src/article/article.entity'
。在开发模式下是正常的。 - Eve-Samanest new project-name
创建一个新的NestJS项目,它将自带package.json
中所需的脚本。yarn build
yarn start:prod
其余的取决于您想要托管应用程序的位置。NestJS 可以在任何通用托管平台上运行(如 Heroku、Vercel、AWS 等)。
如果您想要低配置且免费开始使用,可以尝试使用以下 Docker 化设置在 Heroku 上启动:
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
应用程序创建后,请运行
heroku git:remote --app <app-name>
heroku stack:set container
bootstrap
函数(main.ts
)中使用PORT
环境变量:await app.listen(process.env.PORT || 3000);
tsconfig.json
(除非你有充分的理由,否则不要发出源映射,同样适用于声明、剥离注释等)。 - VinceOPS