首页 > 编程语言 >Node.js 后端项目部署与 Docker 容器化过程总结

Node.js 后端项目部署与 Docker 容器化过程总结

时间:2024-11-19 13:58:31浏览次数:1  
标签:Node const app js 3001 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 与之交互。

标签:Node,const,app,js,3001,Docker
From: https://www.cnblogs.com/yangstar/p/18554701

相关文章

  • Docker安装配置Seata-Server
    1部署官方文档指引1.1client每个业务数据库都要新建undo_log表。对springboot应用,执行client-MySQL-AT,切tag=1.5.2:https://github.com/seata/seata/blob/v1.5.2/script/client/at/db/mysql.sql1.2server新建seata-for-hire数据库,执行server-MySQL:https......
  • 【web】Gin+Go-Micro +Vue+Nodejs+jQuery+ElmentUI 用户模块之登陆功能bug现场调试以
    调试Web应用中的用户登录功能需要一定的技巧和工具支持。在这份指南中,我们将利用Gin、Go-Micro、Vue、Node.js、jQuery和ElementUI,介绍如何调试用户登录功能及其效果演示,涵盖初级、中级和高级用法。初级用法介绍初级阶段以简化的HTML表单和jQuery实现用户登录,并使用Gin框......
  • docker原理、常用命令,以及部署nginx、tomcat、es+kibana练习(一)
    基本结构镜像(image):docker镜像可以当作一个模板,通过这个模板可以创建多个容器。例如一个tomcat镜像=>运行=>容器(提供服务)容器(container):docker利用容器技术,可以独立运行一个或一组应用(容器间相互隔离)docker容器通过镜像来创建,即容器中的进程依赖于镜像中的文......
  • node.js毕设中国人寿物资管理系统(程序+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景关于物资管理系统的研究,现有研究多集中于一般性企业的物资管理流程优化和信息化建设方面。在国内外,许多大型企业都已经建立了自己的物资管理系统,但专门......
  • node.js毕设中药材品类分类系统(程序+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景关于中药材品类分类的研究,现有研究多集中在传统的中药材分类方法,如按药用部分(根类、叶类、花类、皮类等)、按有效成分(含生物碱、含挥发油、含甙类等)、按......
  • (分享源码)计算机毕业设计必看必学 上万套实战教程手把手教学JAVA、PHP,node.js,C++、pyth
     摘 要21世纪的今天,随着社会的不断发展与进步,人们对于信息科学化的认识,已由低层次向高层次发展,由原来的感性认知向理性认知提高,管理工作的重要性已逐渐被人们所认识,科学化的管理,使信息存储达到准确、快速、完善,并能提高工作管理效率,促进其发展。论文主要是对医疗门诊管理......
  • (分享源码)计算机毕业设计必看必学 上万套实战教程手把手教学JAVA、PHP,node.js,C++、pyth
     摘 要随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,校园跳蚤市场管理系统被用户普遍使用,为方便用户能够可以随时进行校园跳蚤市场管理系统的数据信息管理,特开发了基于spri......
  • 尚硅谷Docker实战教程学习笔记
    尚硅谷Docker实战教程学习笔记我从没想过因为即将要学习dockerfile而激动,也因这激动而顿感羞愧。————20241029目录尚硅谷Docker实战教程学习笔记写在前面1.Docker简介2.Docker安装3.Docker常用命令4.Docker镜像5.本地镜像发布到阿里云6.本地镜像发布到私有库7.Docker......
  • 运维系列:Docker学习笔记(3)-- 如何使用Dockerfile构建镜像
    Docker学习笔记(3)--如何使用Dockerfile构建镜像Docker学习笔记(3)--如何使用Dockerfile构建镜像1.Dockerfile的书写规则及指令使用方法(1)FROM(指定基础image)该指令有两种格式:(2)MAINTAINER(用来指定镜像创建者信息)格式:(3)RUN(安装软件用)该指令有两种格式:......
  • 基于Java+SSM+JSP+MYSQL实现的宠物领养收养管理系统功能设计与实现八
    一、前言介绍:免费学习:猿来入此1.1项目摘要随着人们生活水平的提高,宠物已经成为越来越多家庭的重要成员。然而,宠物的数量增长也带来了一系列问题,如流浪宠物数量的增加、宠物健康管理的缺失以及宠物领养收养信息的不透明等。这些问题不仅影响了宠物的生存状况,也给社会带来了一定......