基于docker快速搭建mediasoup开发测试环境
一、基础环境
- windows10
- docker windows桌面版
- visual studio code
备注:docker和vmmare不能同时使用。自行从网上搜到解决办法后,
管理员方式打开终端,执行如下命令后重启生效。
启动docker
bcdedit /set hypervisorlaunchtype auto
启动虚拟机
bcdedit /set hypervisorlaunchtype off
二、环境部署
2.1 使用docker安装ubuntu系统
2.1.1 配置文件
创建文件Dockerfile,内容如下
FROM ubuntu
RUN apt-get update && \
apt-get install -y build-essential pip net-tools iputils-ping iproute2 curl
RUN curl -fsSL https://deb.nodesource.com/setup_16.x | bash -
RUN apt-get install -y nodejs
RUN npm install -g watchify
EXPOSE 3000
EXPOSE 2000-2020
EXPOSE 10000-10100
2.1.2 运行命令
docker build -t ubuntu .
备注:如果报错如下
failed to solve with frontend dockerfile.v0: failed to create LLB definition:
进行如下调整
Docker 桌面 -> 设置 -> Docker 引擎 ->“features”: { buildkit: true}将"features": { buildkit: false}.
2.2 使用docker启动ubuntu系统
2.2.1 配置文件
创建文件docker-compose.yml,内容如下
version: "3"
services:
linux:
container_name: "ubuntu-linux"
image: "ubuntu"
restart: "always"
tty: true
ports:
- "3000:3000"
- "2000-2020:2000-2020"
volumes:
- "E:\\docker Tutorials/mediasoup/src:/user/src"
备注:
1)每一列必须对齐
2)E:\\docker
必须用双\
2.2.2 运行命令
docker-compose up -d
2.3 使用vscode搭建远程开发调试环境
2.3.1 依赖软件
1)在vscode中安装 docker
2)在vscode中安装 Dev Containers
2.3.2 运行方法
1)点击vscode docker按钮
2)在CONTAINERS中找到ubuntu虚拟机
3)右键ubuntu虚拟机,选择attach visual studio code
4) 此时会打开一个新的vscode界面
5)选择打开路径/user/src即可
2.4 使用npm安装环境
1)创建example文件夹,执行命令npm init
2)生成package.json;内容例子如下
{
"name": "example",
"version": "1.0.0",
"description": "",
"main": "app.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"type": "module"
}
备注:
最要新增一行 "type": "module"
3)执行命令 npm install express httpolyglot socket.io socket.io-client --save
4) 执行命令 npm install mediasoup
可能会报错,解决如下
export http_proxy=127.0.0.1:8080
export https_proxy=127.0.0.1:8080
4)执行命令 npm install mediasoup-cient
可能会报错,解决如下
换个新的控制台
2.4 测试代码与运行
2.4.1 测试http服务器
测试代码如下
创建app.js文件
import express from 'express'
const app = express()
import https from 'httpolyglot'
import fs from 'fs'
import path from 'path'
const __dirname = path.resolve()
app.get('/',(req,res)=>{
res.send('Hello from mediasoup app!');
})
const options = {}
const httpsServer = https.createServer(options,app)
httpsServer.listen(3000,() =>{
console.log('listening on port: ' + 3000)
})
启动命令
node app.js
本地打开浏览器 http://localhost:3000/
出现Hello from mediasoup app!
表示测试环境搭建完毕
2.4.2 测试https服务器
测试代码如下
修改app.js文件,
const options = {}
改为
const options = {
key: fs.readFileSync('./server/ssl/key.pem','utf-8'),
cert: fs.readFileSync('./server/ssl/cert.pem','utf-8')
}
创建key.pem和cert.pem
openssl genrsa -out test.key 2048
openssl req -new -x509 -days 3650 -key test.key -out test.crt
openssl rsa -in test.key -out key.pem
openssl x509 -in test.crt -out test.pem
本地打开浏览器 https://localhost:3000/
出现Hello from mediasoup app!
表示https测试环境搭建完毕
三、视频会议测试demo
结果展示:包含一个苹果手机,一个ipad,一个win10pc。
demo下载地址:
https://github.com/jamalag/mediasoup3
如果访问不通:可以在csdn下载
https://download.csdn.net/download/RenZuoym/87294113
本文基于如下视频整理:(视频也是搬运工,真正作者是github地址 jamalag )
https://www.bilibili.com/video/BV1544y1T7tF