Node.js 后端项目部署与 Docker 容器化过程总结
Node.js 后端项目部署与 Docker 容器化过程总结
在windows本地
1. 准备 Node.js 项目
- 安装并初始化 Node.js 项目:
npm init -y
- 安装所需的依赖:
npm install express mssql dotenv
2. 编写后端代码 (app.js
)
- 使用
express
创建路由,连接 SQL Server 数据库,处理数据库操作:
const express = require('express');
const { connectDB, queryDB, getAllRecords } = require('./db');
const app = express();
const port = 3001;
// 使用 JSON 解析请求体
app.use(express.json());
// 数据库连接
connectDB();
// 示例:查询数据库中的数据
app.get('/api/data', async (req, res) => {
try {
const result = await queryDB('SELECT * FROM your_table_name');
res.json(result);
} catch (err) {
res.status(500).json({ error: '查询失败' });
}
});
// 查询 HISDOCOFFLINEMODEL 表
app.get('/api/hisdoctable', async (req, res) => {
try {
const records = await getAllRecords();
res.json(records); // 返回查询结果
} catch (err) {
res.status(500).json({ error: '查询失败' });
}
});
// 启动服务器
app.listen(port, () => {
console.log(`服务器正在运行,访问:http://localhost:${port}`);
});
3. 配置数据库连接 (db.js
)
- 使用
mssql
库连接 SQL Server,进行数据库查询操作:
const sql = require('mssql');
require('dotenv').config();
const config = {
user: process.env.DB_USER,
password: process.env.DB_PASSWORD,
server: process.env.DB_SERVER,
database: process.env.DB_DATABASE,
options: {
encrypt: false,
trustServerCertificate: true
}
};
async function connectDB() {
try {
await sql.connect(config);
console.log('数据库连接成功');
} catch (err) {
console.error('数据库连接失败:', err);
}
}
async function queryDB(query) {
try {
const result = await sql.query(query);
return result.recordset;
} catch (err) {
throw err;
}
}
async function getAllRecords() {
const query = 'SELECT * FROM HISDOCOFFLINEMODEL';
return await queryDB(query);
}
module.exports = { connectDB, queryDB, getAllRecords };
4. Docker 容器化
- 创建
Dockerfile
文件来构建镜像:
# 使用 Node.js 官方镜像
FROM node:18
# 设置工作目录
WORKDIR /usr/src/app
# 复制项目文件到容器中
COPY package*.json ./
# 安装依赖
RUN npm install
# 复制源代码
COPY . .
# 暴露端口
EXPOSE 3001
# 启动应用
CMD ["node", "app.js"]
-
使用 Docker 构建镜像:
docker build -t nodebackend .
-
运行容器并映射端口:
docker run -p 3001:3001 nodebackend
5. 检查与调试
- 在 Docker 容器中运行应用后,通过
http://localhost:3001
访问接口,确保服务正常运行。 - 在浏览器中访问 API,例如:
http://localhost:3001/api/data
http://localhost:3001/api/hisdoctable
6. 总结
- 使用 Docker 容器化 Node.js 应用能够方便地将应用和其依赖打包,确保开发和生产环境的一致性。
- 完成 Docker 镜像的构建和部署后,容器将运行数据库查询接口,前端可以通过 REST API 与之交互。