千家信息网

巨杉Tech | 使用 SequoiaDB + Docker + Nodejs 搭建 Web 服务器

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,容器化技术的出现大大简化了应用开发人员在构建底层基础设施的工作。SequoiaDB 巨杉数据库于3.2.1版本正式推出了 Docker 容器化部署方案,本文将会基于 SequoiaDB 巨杉数据库与N
千家信息网最后更新 2026年11月01日巨杉Tech | 使用 SequoiaDB + Docker + Nodejs 搭建 Web 服务器

容器化技术的出现大大简化了应用开发人员在构建底层基础设施的工作。SequoiaDB 巨杉数据库于3.2.1版本正式推出了 Docker 容器化部署方案,本文将会基于 SequoiaDB 巨杉数据库与Nodejs的 Docker 镜像搭建一个简易的 Web 服务器。

1、规划部署

我们将会搭建一个三分区三副本的高可用 SequoiaDB 巨杉数据库。同时,我们将会创建一个 SequoiaDB 巨杉数据库的 MySQL 实例,用以提供 Nodejs 作为数据源。

容器角色

容器名/IP:端口

分区组

镜像版本

数据库协调节点

coord_catalog/172.17.0.2:11810

SYSCoord

sequoiadb/sequoiadb:v3.2.1

数据库编目节点

coord_catalog/172.17.0.2:11800

SYSCatalog

sequoiadb/sequoiadb:v3.2.1

数据分区1副本1

sdb_data1/172.17.0.3:11820

group1

sequoiadb/sequoiadb:v3.2.1

数据分区1副本2

sdb_data2/172.17.0.4:11820

group1

sequoiadb/sequoiadb:v3.2.1

数据分区1副本3

sdb_data3/172.17.0.5:11820

group1

sequoiadb/sequoiadb:v3.2.1

数据分区2副本1

sdb_data2/172.17.0.4:11830

group2

sequoiadb/sequoiadb:v3.2.1

数据分区2副本2

sdb_data3/172.17.0.5:11830

group2

sequoiadb/sequoiadb:v3.2.1

数据分区2副本3

sdb_data1/172.17.0.3:11830

group2

sequoiadb/sequoiadb:v3.2.1

数据分区3副本1

sdb_data3/172.17.0.5:11840

group3

sequoiadb/sequoiadb:v3.2.1

数据分区3副本2

sdb_data1/172.17.0.3:11840

group3

sequoiadb/sequoiadb:v3.2.1

数据分区3副本3

sdb_data2/172.17.0.4:11840

group3

sequoiadb/sequoiadb:v3.2.1

数据库 MySQL实例

mysql/172.17.0.6:3306

-

sequoiadb/sequoiasql-mysql:v3.2.1

Nodejs Web 服务器

nodetest/172.17.0.7:3000

-

node:latest

2、安装 Docker 环境

对于已经安装了 Docker 环境的读者可以跳过本章节。对于之前没有使用过 Docker 的读者可以通过本章节安装本地 Docker 环境。

Docker 可以运行在绝大部分主流操作系统上,包括常用的 Windows、Mac 以及 Linux 的多个版本均可支持。

对于 Mac 用户可以安装 Docker Desktop for Mac,下载地址在:

https://hub.docker.com/editions/community/docker-ce-desktop-mac

对于 Windows 用户可以安装 Docker Deskop for Windows,下载地址在:

https://docs.docker.com/docker-for-windows/install/

对于 Linux 用户则可以直接使用 yum 或 apt-get 进行安装:

https://docs.docker.com/install/linux/docker-ce/centos/

https://docs.docker.com/install/linux/docker-ce/ubuntu/

3、搭建 SequoiaDB 巨杉数据库集群

3.1、将 SequoiaDB 引擎与 SequoiaSQL-MySQL 数据库实例下载至本地

docker pull sequoiadb/sequoiadb :v3.2.1

docker pull sequoiadb/sequoiasql-mysql:v3.2.1

3.2、启动数据库引擎容器

docker run -it -d --name coord_catalog sequoiadb/sequoiadb: v3.2.1

docker run -it -d --name sdb_data1 sequoiadb/sequoiadb:v3.2.1

docker run -it -d --name sdb_data2 sequoiadb/sequoiadb:v3.2.1

docker run -it -d --name sdb_data3 sequoiadb/sequoiadb:v3.2.1

3.3、验证各个容器的 IP 地址

docker inspect --format '{{ .NetworkSettings.IPAddress}}' coord_catalog

docker inspect --format '{{ .NetworkSettings.IPAddress}}' sdb_data1

docker inspect --format '{{ .NetworkSettings.IPAddress}}' sdb_data2

docker inspect --format '{{ .NetworkSettings.IPAddress}}' sdb_data3

预期输出结果为 :

172.17.0.2

172.17.0.3

172.17.0.4

172.17.0.5

3.4、部署 SequoiaDB 巨杉数据库引擎集群

docker exec coord_catalog "/init.sh" \

--coord='172.17.0.2:11810' \

--catalog='172.17.0.2:11800' \

--data='group1=172.17.0.3:11820,172.17.0.4:11820,172.17.0.5:11820;group2=172.17.0.4:11830,172.17.0.5:11830,172.17.0.3:11830;group3=172.17.0.5:11840,172.17.0.3:11840,172.17.0.4:11840'

预期输出结果为:

Begin generating SequoiaDB conf file

Finish generating SequoiaDB conf file

Restarting sdbcm process, it will take 10 seconds

Deploy...

Execute command: /opt/sequoiadb/tools/deploy/../../bin/sdb -f /opt/sequoiadb/tools/deploy/quickDeploy.js -e ''

************ Deploy SequoiaDB ************************

Create catalog: 172.17.0.2:11800

Create coord: 172.17.0.2:11810

Create data: 172.17.0.3:11820

Create data: 172.17.0.4:11820

Create data: 172.17.0.5:11820

Create data: 172.17.0.4:11830

Create data: 172.17.0.5:11830

Create data: 172.17.0.3:11830

Create data: 172.17.0.5:11840

Create data: 172.17.0.3:11840

Create data: 172.17.0.4:11840

3.5、启动 MySQL 实例容器

docker run -it -d -p 3306:3306 --name mysql sequoiadb/sequoiasql-mysql:v3.2.1

3.6、验证 IP 地址

docker inspect --format '{{ .NetworkSettings.IPAddress}}' mysql

预期输出结果为:

172.17.0. 6

3.7、创建 MySQL 实例

docker exec mysql "/init.sh" --port=3306 --coord='172.17.0.2:11810'

其中 coord 参数填写协调节点所在的 IP 地址与监听端口。

预期输出结果为:

Creating SequoiaSQL instance: MySQLInstance

Modify configuration file and restart the instance: MySQLInstance

Restarting instance: MySQLInstance

Opening remote access to user root

Restarting instance: MySQLInstance

Instance MySQLInstance is created on port 3306, default user is root

4 、登录 MySQL 并创建一个测试表

4.1、得到 MySQL 实例的容器 ID

docker ps --filter name=mysql --format {{.ID}}

预期结果为 MySQL 实例容器所在的 Container ID:

cc17df22a908

4.2、登录 MySQL 实例命令行

docker exec -it cc17df22a908 "/opt/sequoiasql/mysql/bin/mysql" -h 127.0.0.1 -u root

其中 -it 参数为 MySQL 实例的容器 ID,预期结果为:

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 4

Server version: 5.7.25 Source distribution

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

No entry for terminal type "xterm";

using dumb terminal settings.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

4.3、创建数据库与表,并创建一条测试数据

create database sample;

use sample;

create table t1 ( c1 varchar(100));

insert into t1 values ("SequoiaDB");

select * from t1;

预期输出结果为:

+-----------+

| c1 |

+-----------+

| SequoiaDB |

+-----------+

1 row in set (0.02 sec)

5、创建 Nodejs 服务

5.1、创建 app.js 文件

var express = require('express'); // 引入 express 模块

var mysql = require('mysql'); // 引入 mysql 模块

var app = express(); // 创建 express 的实例

var connection = mysql.createConnection({ // 创建 mysql 实例

host:'172.17.0.6',

port:'3306',

user:'root',

password:'',

database:'sample'

});

var sql = 'SELECT * FROM t1';

connection.connect();

app.get('/',function (req,res) {

connection.query(sql, function (err,result) {

if(err){

console.log('[SELECT ERROR]:',err.message);

}

res.send('Hello: ' + result[0].c1 ) ;

});

});

app.listen(3000,function () { //// 监听 3000 端口

console.log('Server running at 3000 port');

});

代码中的 host 使用 MySQL 实例的 IP 地址。

5.2、创建 package.json 文件

{

"name": "nodetest",

"version": "1.0.0",

"description": "",

"main": "index.js",

"scripts": {

"test": "echo \"Error: no test specified\" && exit 1"

},

"author": "",

"license": "ISC",

"dependencies": {

"express": "^4.17.1",

"mysql": "^2.17.1"

}

}

5.3、创建 Dockerfile 文件

FROM node:latest

RUN mkdir -p /usr/src/

COPY package.json /usr/src/

COPY app.js /usr/src/

WORKDIR /usr/src/

RUN npm install

# 定义程序默认端口

EXPOSE 3000

# 运行程序命令

CMD ["node","app.js"]

5.4、当前目录中应仅包含三个文件

$ ls -la

total 24

drwxr-xr-x 5 sequoiadb staff 160 7 16 15:22 .

drwxr-xr-x 94 sequoiadb staff 3008 7 16 10:50 ..

-rw-r--r-- 1 sequoiadb staff 206 7 16 12:24 Dockerfile

-rw-r--r-- 1 sequoiadb staff 766 7 16 12:27 app.js

-rw-r--r-- 1 sequoiadb staff 278 7 16 12:03 package.json

5.5、创建 Nodejs 服务镜像

docker build -t nodetest .

5.6、运行 Nodejs 服务容器

docker run -d -p 3000:3000 nodetest

5.7、打开浏览器,连接本地的 3000 端口

5.8、更改数据库中的记录,可以看到浏览器显示的内容随之发生调整

$ docker exec -it cc17df22a908 "/opt/sequoiasql/mysql/bin/mysql" -h 127.0.0.1 -u root

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 7

Server version: 5.7.25 Source distribution

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

No entry for terminal type "xterm";

using dumb terminal settings.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> use sample;

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A

Database changed

mysql> update t1 set c1="Node" where c1="SequoiaDB";

Query OK, 1 row affected (0.04 sec)

Rows matched: 1 Changed: 1 Warnings: 0

刷新浏览器后显示:

6、小结

本文展示了如何通过 SequoiaDB 巨杉数据库的 Docker 容器,结合 Nodejs 快速搭建一个 Web 应用。灵活将分布式数据库结合容器使用,能够使用户快速构建开发测试环境,大幅度降低开发过程中的基础设施维护成本。


数据 数据库 容器 实例 副本 结果 地址 服务 端口 输出 文件 环境 用户 引擎 浏览器 版本 节点 镜像 开发 测试 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 平安科技 互联网 奇酷互联网络科技公司 沃里互联网科技 时间互联网络科技 博兴的互联网电子科技公司 深圳国际航运科技和互联网 互联网之后的科技是什么 互联网系的金融科技公司 顶级互联网科技成果有哪些 湖南诚度互联网科技有限公司 河南猎农互联网科技有限公司 互联网保险科技创业 想开互联网科技公司怎么样 广州新华互联网科技学校电竞方面 深圳无忧互联网科技 上海创道互联网络科技有限公司 容联科技互联网电商 互联网企业和网络科技有限公司 伍佰万互联网科技是干嘛的 广州全民伙伴互联网科技有限公司 互联网科技产业 中关村互联网 科技集团 河南真二互联网科技有限公司 智能科技公司是互联网公司吗 科技服务与互联网 一五八零互联网科技 科技与互联网的利与弊 保险科技服务互联网营销体系 互联网科技年终奖 易企秀互联网科技是做什么的
0