编译与部署
修改服务器配置
在 default.config.ts 或对应环境配置修改
export const SERVER_CONFIG: ServerConfig = {
port: [端口号]
};
export const SERVER_CONFIG: ServerConfig = {
basePath: '/my-service',
port: [端口号]
};
编译与打包
Summer使用esbuild打包,最终程序会被打包成:
- 一个可执行文件 /build/index.js
- 一个source map文件 /build/index.js.map
- 一个资源文件夹 /build/resource (可选)
执行命令
npm run build 或 npx summer build --env prod
这里的prod是环境名,可以根据命名需求配置生产环境的环境名
生成文件
build/index.js
build/index.js.map
Summer生成的最终执行文件相当简洁,不再有node_modules目录让部署变得更方便,同时编译打包出的执行文件能够直接检测执行环境
可以通过 node --enable-source-maps index.js
执行,
也可以直接传到 AWS Lambda 阿里云函数FC 等无服务器上执行,不需要再做额外配置
使用资源文件
创建 ./resource 文件夹放入资源文件
./resource 目录会自动被拷贝到 build/resource
获取编译打包时间
打包时间可以用于显示记录包的打包时间
SUMMER_BUILD_TIMESTAMP
启用集群模式
集群模式是NodeJS提供的一种服务器扩展,打开后,NodeJS会以多线程的形式启动多个服务器线程响应请求。一些外部工具类似PM2提供了这样的能力,Summer本身就集成了这项能力,所以你不再需要PM2之类的工具。
export const SERVER_CONFIG: ServerConfig = {
port: 8801,
clusterMode: true,
// workersNumber 如果不设置默认为你部署服务器的内核数
// 或者你可以自己设置集群worker数
workersNumber: 4
}
在Linux系统机器部署
将 build/index.js 和 build/index.js.map 文件传上 linux 服务器
执行
node --enable-source-maps index.js
启动即可
--enable-source-maps 可以帮助定位debug错误信息,建议开启 不开启启动速度会更快一些些
在Docker/K8S 中部署
- 创建 Dockerfile
FROM node:14
WORKDIR /usr/src/app
COPY ./build .
EXPOSE 8801
CMD [ "node", "--enable-source-maps", "index.js" ]
执行docker打包
docker build . -t <your username>/node-web-app
执行
docker run -p 80:8801 -d <your username>/node-web-app
在 AWS Lambda 上部署
直接将打包好的 build/index.js 压缩成zip文件上传到Lambda服务器即可
在 阿里云 函数计算 FC 上部署
直接将打包好的 build/index.js 压缩成zip文件上传到FC服务器即可