使用Typescript构建了node.js应用程序,因此需要在运行之前先将其“编译”到JS。我打算使用NAR(https://github.com/h2non/nar)构建可随时部署的软件包,以避免摆弄npm install
并在生产时对其进行编译。我还使用PM2作为节点应用程序的流程管理器。
但据我所知,PM2只能从git部署(获取源代码并稍后调用npm install
等),但我找不到一种方法来轻松部署已经预构建的应用程序。
这是我使用deploy.yml
提取的档案中包含的nar extract <package>
文件:
apps:
- script: dist/app.js
merge_logs: true
name: server
instances: 1 # 0 => max, depending on CPU cores
exec_mode: cluster
node_args: --harmony --harmony_destructuring --harmony_default_parameters
log_file: deploy/logs/server.log
pid_file: deploy/pids/server.pid
source_map_support: true
env:
NODE_ENV: production
第一次运行时工作正常,但是当我尝试重新部署它(用新版本替换应用程序内容)并调用pm2 reload all
时,我得到错误的进程,说他们无法加载ProcessManager
来自PM2或找不到我的.env
文件(已到位)。
我一旦用pm2 kill
杀死PM2守护程序并再次使用pm2 start all deploy.yml
启动应用程序,就会点击它。但这可能不是PM2应该如何使用的,对吗?
您是否有过使用此类设置的经验并遇到类似问题?或者你可以指点我另一种运行部署的方式吗?