我正在尝试将我的NestJS应用程序部署到AWS Elastic Beanstalk,但一直没有成功,有没有人可以详细说明一下如何实现?
完整解释:
我有一个nestjs应用程序和typeorm,但没有配置它与RDS一起工作,所以我们现在将其留给以后(也许有连接,我不知道)。
首先,我创建了一个CodePipeline,当我将新版本推送到我的GitHub存储库时,它会自动将整个仓库部署到在node 12.x上运行的eb实例。
现在,我希望每次git push时,实例都会安装依赖项,构建嵌套应用程序,并从/dist/main.js启动服务器。
我已经添加了一个Procfile文件:
web: npm install && npm run build && npm run start:prod
我还在EB上添加了PORT环境变量,并在main.ts上进行了配置,当找不到时使用8080。
而且我的package.json脚本和新创建的Nest应用程序一样:
"scripts": {
"prebuild": "rimraf dist",
"build": "nest build",
"format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"",
"start": "nest start",
"start:dev": "nest start --watch",
"start:debug": "nest start --debug --watch",
"start:prod": "node dist/main",
"lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix",
"test": "jest",
"test:watch": "jest --watch",
"test:cov": "jest --coverage",
"test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand",
"test:e2e": "jest --config ./test/jest-e2e.json"
}
在部署时,我在日志中看到它执行了类似于这样的操作:
Jan 23 20:01:14 web: > app@0.0.1 start /var/app/current
Jan 23 20:01:14 ip-172-31-17-171 web: > sudo npm i -g @nestjs/cli && node dist/main
Jan 23 20:01:14 web: We trust you have received the usual lecture from the local System
Jan 23 20:01:14 web: Administrator. It usually boils down to these three things:
Jan 23 20:01:14 web: #1) Respect the privacy of others.
Jan 23 20:01:14 web: #2) Think before you type.
Jan 23 20:01:14 web: #3) With great power comes great responsibility.
Jan 23 20:01:14 web: sudo: no tty present and no askpass program specified
Jan 23 20:01:14 web: npm ERR! code ELIFECYCLE
Jan 23 20:01:14 web: npm ERR! errno 1
Jan 23 20:01:14 web: npm ERR! app@0.0.1 start: `sudo npm i -g @nestjs/cli && node dist/main`
Jan 23 20:01:14 web: npm ERR! Exit status 1
Jan 23 20:01:14 web: npm ERR!
Jan 23 20:01:14 web: npm ERR! Failed at the app@0.0.1 start script.
当我输入环境url时,出现502错误。
可能是npm权限问题吗?或者我只需要部署/dist文件夹的某些内容?你认为问题在哪里呢?
这是我第一次尝试将后端服务器部署到eb :)
sudo npm i -g @nestjs/cli && node dist/main