返回
后端服务搭建:从0开始构建Typescript+Express+Sequelize+Swagger+PM2+Docker的项目环境
后端
2023-11-23 13:04:05
-
初始化项目
-
新建项目
- 使用终端命令行导航到您想要创建项目的工作目录。
- 运行以下命令创建新的项目:
mkdir my-project cd my-project
-
安装必要的依赖
- 运行以下命令安装必要的依赖项:
npm init -y npm install typescript express sequelize swagger pm2 dockerfile-generator
-
配置TypeScript
- 创建tsconfig.json文件,并添加以下配置:
{ "compilerOptions": { "target": "es5", "module": "commonjs", "outDir": "./dist", "sourceMap": true, "strict": true, "noImplicitAny": true, "esModuleInterop": true, "allowSyntheticDefaultImports": true }, "include": [ "src" ] }
-
-
使用Sequelize连接数据库
- 安装Sequelize:
npm install sequelize
- 创建models目录,并在其中创建模型文件。例如,创建一个名为User.ts的文件,并添加以下代码:
import { Sequelize, DataTypes } from 'sequelize'; const sequelize = new Sequelize('database', 'username', 'password', { dialect: 'mysql', host: 'localhost', port: 3306 }); const User = sequelize.define('User', { id: { type: DataTypes.INTEGER, autoIncrement: true, primaryKey: true }, name: { type: DataTypes.STRING, allowNull: false }, email: { type: DataTypes.STRING, allowNull: false, unique: true }, password: { type: DataTypes.STRING, allowNull: false } }); export default User;
- 同理,您可以创建其他模型文件。
-
使用Swagger生成API文档
- 安装Swagger:
npm install swagger-jsdoc swagger-ui-express
- 创建swagger.json文件,并添加以下配置:
{ "openapi": "3.0.0", "info": { "title": "My API", "version": "1.0.0" }, "paths": { "/users": { "get": { "summary": "Get all users", "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/User" } } } } } } }, "post": { "summary": "Create a new user", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/User" } } } }, "responses": { "201": { "description": "Created", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/User" } } } } } } }, "/users/{id}": { "get": { "summary": "Get a user by ID", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/User" } } } } } }, "put": { "summary": "Update a user by ID", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "integer" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/User" } } } }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/User" } } } } } }, "delete": { "summary": "Delete a user by ID", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "integer" } } ], "responses": { "204": { "description": "No Content" } } } } }, "components": { "schemas": { "User": { "type": "object", "properties": { "id": { "type": "integer", "format": "int64" }, "name": { "type": "string" }, "email": { "type": "string" }, "password": { "type": "string" } } } } } }
- 在您的Express应用程序中使用Swagger:
const swaggerJSDoc = require('swagger-jsdoc'); const swaggerUi = require('swagger-ui-express'); const options = { swaggerDefinition: { openapi: '3.0.0', info: { title: 'My API', version: '1.0.0' } }, apis: ['./src/routes/*.ts'] }; const specs = swaggerJSDoc(options); app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(specs));
-
使用PM2管理进程
- 安装PM2:
npm install pm2 -g
- 在您的项目根目录下创建一个名为pm2.json的文件,并添加以下配置:
{ "apps": [ { "name": "my-project", "script": "src/index.ts", "env": { "NODE_ENV": "production" } } ] }
- 使用以下命令启动PM2:
pm2 start pm2.json
-
使用Docker打包部署项目
- 创建Dockerfile文件,并添加以下内容:
FROM node:18-alpine WORKDIR /app COPY package*.json ./ RUN npm install COPY . . CMD ["npm", "start"]
- 使用以下命令构建Docker镜像:
docker build -t my-project .
- 使用以下命令运行Docker容器:
docker run -p 3000:3000 my-project
现在,您的