利用Docker、云服务器、mongodb搭建自己的测试平台
准备一个云服务器
购买一个云服务器,在阿里云,腾讯云上购买即可。
然后创建一个实例,安装Linux操作系统,我安装的是CentOS。
记住账号和密码,可以使用ssh远程登录即可。

搭建测试环境
Docker是一个轻量级的虚拟机,可以使用Docker下载一个Docker里面包含你想要的环境的镜像
比如你想运行一个数据库的Docker镜像,那么就可以下载一个Mysql镜像,然后使用Docker运行起来,然后把你的项目链接到这个Docker里面的数据库就可以了。非常方便。
在云服务器上安装Docker工具
1.首先从github上找到安装docker的sh脚本
1 | https: //github .com /docker/docker-install |
2.然后ssh链接远程云服务,执行命令安装docker
1 | curl -fsSL https: //get .docker.com -o get-docker.sh sh get-docker.sh |
信息记录
1 2 3 4 5 6 7 8 9 | + sh -c 'yum install -y -q docker-ce docker-ce-cli containerd.io docker-scan-plugin docker-compose-plugin docker-ce-rootless-extras' warning: /var/cache/yum/x86_64/7/docker-ce-stable/packages/docker-ce-20 .10.21-3.el7.x86_64.rpm: Header V4 RSA /SHA512 Signature, key ID 621e9f35: NOKEY docker-ce-20.10.21-3.el7.x86_64.rpm 的公钥尚未安装 导入 GPG key 0x621E9F35: 用户ID : "Docker Release (CE rpm) <docker@docker.com>" 指纹 : 060a 61c5 1b55 8a7f 742b 77aa c52f eb6b 621e 9f35 来自 : https: //download .docker.com /linux/centos/gpg setsebool: SELinux is disabled. |
3.安装docker compose
docker compose容器管家,在只要Docker容器的时候,每次镜像启动都要收到执行命令,有了这个大管家,可以通过配置文件的方式让它帮忙其他配置的镜像。
docker compose官方介绍:https://docs.docker.com/compose/install/other/
1 | curl -SL https: //github .com /docker/compose/releases/download/v2 .12.2 /docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose |
修改执行权限
1 | sudo chmod +x /usr/local/bin/docker-compose |
4.下载版本4的mongo镜像
这里使用的数据库是mongodb数据库,所以对应下载的镜像是mongo,选择版本4下载。
mongodb数据库是一个NOSQL数据库,相对于SQL关系型数据库而言,它是一个松散型的数据库。对应数据结构不确定的应用比较适合,并且不会出现数据冗余。像爬虫应用。
命令如下:
1 | docker pull mongo:4 |
首先在下面目录下修改docker的镜像源,加速下载
1 2 3 4 5 6 7 | /etc/docker/daemon .json { "registry-mirrors" :[ "https://registry.docker-cn.com" ] } // 重启docker使生效 service docker restart |
注意,直接vi /etc/docker/daemon.json 添加下面的镜像会报错
"/etc/docker/daemon.json" E212: Can't open file for writing
原因是/etc/目录下没有docker目录,需要收到创建后再建文件
步骤如下:
1 2 3 4 | cd /etc mkdir docker cd docker vi daemon.json |
1 2 3 4 5 6 7 8 9 10 | // 下载docker 镜像 docker pull mongo:4 // 查看本地安装的docker镜像 docker images // 运行docker镜像 -d:后台运行, -p:指定宿主端口:docker内进程端口的关系 // mongo:4运行mongo4版本 --name:运行的docker在进程中的名字 // 注意:对宿主机设置放行10050端口,简单的方式是关闭防火墙 docker run -d --name some-mongo -p 10050:27017 mongo:4 |
5.为镜像配一个默认启动配置
一般情况下,会做一些系统的配置和宿主端口与docker端口的映射关系,这样Docker就会默认启动这个镜像了
创建docker-compose.yml配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | version: '3.1' services: mongo: image: mongo restart: always environment: MONGO_INITDB_ROOT_USERNAME: root MONGO_INITDB_ROOT_PASSWORD: root123456 ports: #端口映射 宿主端口:容器端口 - 27017:27017 volumes: #数据备份,在宿主机保存数据文件 宿主保存目录:容器中的数据目录 - /home/mongotest : /data/db |
然后ssh登录云主机,将配置文件设置到主机上的docker-compose.yml文件上
1 2 3 4 5 | [root@VM-0-11-centos ~] # cd /home/ [root@VM-0-11-centos home] # ls [root@VM-0-11-centos home] # mkdir mongotest [root@VM-0-11-centos home] # cd mongotest/ [root@VM-0-11-centos mongotest] # vi docker-compose.yml |
执行更新,注意此时docker-compose会检测配置文件,如果docker-compose.yml里面的imags不存在会自动下载,并运行。
1 | docker-compose up -d |
6.修改防火墙
在对云服务器的防火墙放行对应的端口,如下面放行端口10050
1 2 3 4 5 6 7 8 9 10 11 12 | // 查看docker运行进程 docker ps // 简单的方式是关闭防火墙 Centos: service firewalld stop // 对防火墙设置放行这个端口 firewall-cmd --zone=public --add-port=10050 /tcp --permanent // 重启 firewall-cmd --reload // 查看防火墙状态 firewall-cmd --state |
使用图形化界面操作数据库
对于mongodb这种NOSQL数据库,可以使用GUI工具进行管理,更加方便。
使用Robo 3T需要注册账号,然后在第一次启动时,输入网页登录后产生的hash值才能正常启动
1.下载Robo 3T mongo的图形化管理工具
1 2 3 4 5 | https: //robomongo .org // 将网页登录成功后产生的md5复制,然后粘贴到app启动的code中,才能正常打开 3045a653-0bf5-4ac7-99e2-9c315fdf462d |
登录成功后,建立本地与远程docker的链接

在Node项目中链接使用
mongoose是mongodb的node工具,可以方便的在node服务端使用
安装:
1 2 3 4 | // 初始化工程 npm init -y // 安装第三方模块mongoose npm install --save mongoose |
然后链接云服务器中运行的docker镜像,mongodb数据库
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | const mongoose = require( 'mongoose' ); //test :123456@ @前面表示:数据库的用户名:密码 //27017/testdb 27017端口后面表示:链接的数据库 mongoose.connect( "mongodb://test:123456@1.15.55.28:27017/testdb" , {useNewUrlParser: true , useUnifiedTopology: true }); const Cat = mongoose.model( 'Cat' , { name: String }); const kitty = new Cat({ name: 'Zildjian' }); kitty.save( function (err) { if (err) { console.log( 'err' ,err) } else { console.log( 'miao!!' ) } }) |
代码例子:gitHub库:https://github.com/zhfei/ReactBasicKnowledge 中的mongoose_demo部分
· 分享4款.NET开源、免费、实用的商城系统
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了