在windows上打包mediasoup arm64版本的docker镜像

mediasoup版本:3.14.14
mediasoup-demo版本:v3
windows 10 专业版
docker-desktop版本:4.30.0 (149282)
docker info:

Client:Version:    26.1.1Plugins:buildx: Docker Buildx (Docker Inc.)Version:  v0.14.0-desktop.1Path:     C:\Program Files\Docker\cli-plugins\docker-buildx.exe
...
Server:
...Server Version: 26.1.1Storage Driver: overlay2

打包完之后的镜像:
在这里插入图片描述

第一步:前期准备

1.下载docker-desktop,并开启buildx。不开启buildx无法跨平台编译。尽可能下载最新或最稳定的docker-desktop。
2.下载mediasoup-demo到本地目录。
3.修改打包文件。
如果不需要指定mediasoup的版本,不需要修改server/package.json中默认拉去的是最新的mediasoup版本。如果需要指定mediasoup的版本可以配置为Release的版本号获知指定某次提交。
我的配置(3.14.14):

"mediasoup": "git+https://github.com/versatica/mediasoup.git#efa8f5149082b4738ad5d3a8144e6b1d56e4fe73",

4.创建certs文件夹,生成证书。打开powershell执行。

openssl req -new -newkey rsa:1024 -x509 -sha256 -days 3650 -nodes -out fullchain.pem -keyout privkey.pem

5.修改config.example.js为config.js。里面的内容可以后面再改。
6.修改Dockerfile。建议修改为18或20。打包时间非常非常漫长,没有时间尝试更新的版本。
第一个是v18.20.4 第二个是v20.10.0
在这里插入图片描述

我的配置:

FROM node:18 AS stage-one
# Install DEB dependencies and others.
RUN \set -x \&& apt-get update \&& apt-get install -y net-tools build-essential python3 python3-pip valgrind
WORKDIR /service
COPY package.json .
RUN npm install --verbose --legacy-peer-deps
COPY server.js .
COPY config.js .
COPY lib lib
COPY certs certs
CMD ["node", "/service/server.js"]	

第二步,开始打包。

1.下载node-18的镜像到本地,否则会很慢。

docker pull node:18 --platform linux/arm64

2.开始打包mediasoup

docker buildx build --platform linux/arm64/v8  --progress=plain  -f .\Dockerfile -t mediasoup:v3-arm .

三个小时后打包成功。

#9 4540.3 npm http fetch GET 200 https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz 28963ms (cache miss)
#9 4544.2 npm http fetch GET 200 https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz 33605ms (cache miss)
#9 8735.9 npm info run bufferutil@4.0.8 install node_modules/bufferutil node-gyp-build
#9 8736.0 npm info run utf-8-validate@5.0.10 install node_modules/utf-8-validate node-gyp-build
#9 8761.5 npm info run bufferutil@4.0.8 install { code: 0, signal: null }
#9 8761.5 npm info run mediasoup@3.14.14 postinstall node_modules/mediasoup node npm-scripts.mjs postinstall
#9 8762.7 npm info run es5-ext@0.10.64 postinstall { code: 0, signal: null }
#9 11973.4 npm info run mediasoup@3.14.14 postinstall { code: 0, signal: null }
#9 11976.2
#9 11976.2 added 614 packages, and audited 615 packages in 3h
#9 11976.2
#9 11976.2 53 packages are looking for funding
#9 11976.2   run `npm fund` for details
#9 11976.3
#9 11976.3 11 vulnerabilities (7 moderate, 4 high)
#9 11976.3
#9 11976.3 To address all issues (including breaking changes), run:
...

PS:不确定后面这几个code: 0, signal: null。是不是正常情况,反正镜像打成了,也能正常运行。

第三步:运行docker

保存镜像到本地

docker save -o mediasoup-v3-arm.tar mediasoup:v3-arm

拷贝到arm64服务器上。导入镜像。

docker load -i mediasoup-v3-arm.tar

启动mediasoup

docker run --name=mediasoup -p 4443:4443/tcp -p 3000:3000/tcp -p 44440-44500:44440-44500/udp -p 44440-44500:44440-44500/tcp --init -e DEBUG="mediasoup-demo-server:INFO* *WARN* *ERROR*"  -e INTERACTIVE="true" -e PROTOO_LISTEN_PORT="4443"  -e MEDIASOUP_LISTEN_IP="0.0.0.0" -e MEDIASOUP_ANNOUNCED_IP="192.168.50.153"  -e MEDIASOUP_MIN_PORT="2000" -e MEDIASOUP_MAX_PORT="2020"  -e MEDIASOUP_USE_VALGRIND="false" -e MEDIASOUP_VALGRIND_OPTIONS="--leak-check=full --track-fds=yes --log-file=/storage/mediasoup_valgrind_%p.log" -it -d mediasoup:v3-arm

PS:MEDIASOUP_ANNOUNCED_IP为本机的IP地址。如果端口号冲突或者docker代理问题,使用–network host主机模式。

启动成功日志:

...mediasoup-demo-server:INFO running 4 mediasoup Workers... +0ms[opening Readline Command Console...]
type help to print available commands
cmd>   mediasoup-demo-server:INFO creating Express app... +86msmediasoup-demo-server:INFO running an HTTPS server... +2msmediasoup-demo-server:INFO running protoo WebSocketServer... +37ms

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/20314.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

11.19机器学习_逻辑回归

十二 逻辑回归 1.概念 逻辑回归(Logistic Regression)是机器学习中的一种分类模型,逻辑回归是一种分类算法,虽然名字中带有回归,但是它与回归之间有一定的联系。由于算法的简单和高效,在实际中应用非常广泛。 逻辑回归一般用于…

【LLM训练系列01】Qlora如何加载、训练、合并大模型

示例1:Qlora训练Qwen2.5 参考脚本:https://github.com/QwenLM/Qwen/blob/main/recipes/finetune/deepspeed/finetune_qlora_multi_gpu.ipynb 训练命令如下: !torchrun --nproc_per_node 2 --nnodes 1 --node_rank 0 --master_addr localho…

Jmeter数据库压测之达梦数据库的配置方法

目录 1、概述 2、测试环境 3、数据库压测配置 3.1 安装jmeter 3.2 选择语言 3.3 新建测试计划 3.4 配置JDBC连接池 3.5 配置线程组 3.6 配置测试报告 3.7 执行测试 1、概述 Jmeter是Apache组织开发的基于Java的压力测试工具,用于对软件做压力测试。 它最…

[ 应急响应进阶篇-1 ] Windows 创建后门并进行应急处置-5:启动项后门

🍬 博主介绍 👨‍🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~ ✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 🎉点赞➕评论➕收藏 养成习…

编译报错:protoc did not exit cleanly. Review output for more information.

目录标题 解决“protoc did not exit cleanly”的报错问题检查.proto文件的语法 解决“protoc did not exit cleanly”的报错问题 今天做的项目需要用到grpc,然后需要编写proto然后编译后实现grpc的具体方法! 结果编译的时候报了protoc did not exit cl…

Java码农人生开启手册——重载和重写

一、重载 有时在调用现有方法时会出现参数类型不匹配的问题,在Java中,如果多个方法的名字相同,参数列表不同,则称该几种方法被重载了。 注意: 方法名必须相同参数列表必须不同与返回值是否相同无关编译器在编译代码时&…

ComfyUI-unclip模型部署指南

一、介绍 unCLIP 模型是 SD 模型的版本,经过专门调整,除了文本提示之外,还可以接收图像概念作为输入。使用这些模型附带的 CLIPVision 对图像进行编码,然后在采样时将其提取的概念传递给主模型。 它并不是按照传统意义将图像混合…

优雅关闭:避免服务停机带来的业务损失

服务关闭有什么问题? 在“单体应用”复杂到一定程度后,一般会进行系统拆分,也就是微服务架构。服务拆分之后,就需要协同,于是RPC框架就出来了,用来解决各个子系统之间的通信问题。 拆分系统的目的&#x…

硬件知识 cadence16.6 原理图输出为pdf 网络名下划线偏移 (ORCAD)

1. cadence原理图输出为PDF网络名下划线偏移 生这种情况的原因 1. 设计的原理图图纸大小比正常的 A4图纸大。 2. 打印为PDF 的时候,打印机的设置有问题。 2.cadence原理图输出为 PDF网络名下划线偏移的情况 可以看到上图,网络名往上漂移。 3. 解决办法 …

Linux插件zsh(oh-my-zsh)

一、oh-my-zsh基本介绍 oh-my-zsh: https://github.com/ohmyzsh/ohmyzshhttps://github.com/ohmyzsh/ohmyzsh 注意:需要先安装zsh命令,才能安装oh-my-zsh,先测试是否安装了zsh rootserver:/opt # zsh --version zsh 5.8 (x86_6…

异或和之和

//暴力做法 枚举每个子区间 O(n^3) //优化1 利用前缀异或和快速求出区间异或和 O(n^2) //优化2 处理位运算的常用方法:拆位法 常用的思想:贡献法思想 下面详见优化2: 1.拆位贡献法 2.实战真题1 题目链接:1.异或和之和 - 蓝桥…

A039-基于SpringBoot的农产品销售系统的设计与实现

🙊作者简介:在校研究生,拥有计算机专业的研究生开发团队,分享技术代码帮助学生学习,独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取,记得注明来意哦~🌹 赠送计算机毕业设计600…

【大数据学习 | Spark】RDD的概念与Spark任务的执行流程

1. RDD的设计背景 在实际应用中,存在许多迭代式计算,这些应用场景的共同之处是,不同计算阶段之间会重用中间结果,即一个阶段的输出结果会作为下一个阶段的输入。但是,目前的MapReduce框架都是把中间结果写入到HDFS中&…

jmeter操作数据库

简介 Apache JMeter 是一个强大的开源工具,用于负载测试和性能测量。除了Web应用外,JMeter还可以用于测试各种数据库系统,包括MySQL。本文将详细介绍如何使用JMeter来测试MySQL数据库的性能。 环境准备 安装Java:确保你已经安装…

最小生成树——Kruskal、Prim算法

图的存储: 高阶数据结构——图 文章目录 目录 文章目录 一、kruskal算法 二、Prim算法 前言 连通图中的每一棵生成树,都是原图的一个极大无环子图,即:从其中删去任何一条边,生成树 就不在连通;反之&#xf…

STL-stack栈:P1981 [NOIP2013 普及组] 表达式求值

这个题用的STL-栈来做 题目来源:洛谷 相关知识 [NOIP2013 普及组] 表达式求值 题目背景 NOIP2013 普及组 T2 题目描述 给定一个只包含加法和乘法的算术表达式,请你编程计算表达式的值。 输入格式 一行,为需要你计算的表达式&#xff…

数字孪生赋能智慧校园:构建全方位校园安全保障新体系

在11月19日最高人民检察院的党组会上,校园安全问题再次被置于重要议程,会议明确指出,校园安全不仅关乎学生的健康成长,更与社会和谐稳定紧密相连。面对侵害学生权益、危害校园安全的犯罪行为,必须采取“零容忍”态度&a…

Openstack15--块存储服务(Cinder)安装

控制节点 安装Cinder软件包 yum -y install openstack-cinder 安装的“openstack-cinder”软件包里包括“cinder-api”和“cinder-scheduler”模块。安装“openstack-cinder”软件包时,和安装其他OpenStack核心组件时一样,会自动创建名为“cinder”的L…

如何用js方法把页面中的表格导出为excel表格(sheetJS)

目录 一,SheetJS库的基本介绍 这里用到的库是SheetJS,官方文档: sheetJS CE 官方文档 官网对库的解释是: SheetJS社区版提供了经过战斗测试的开源解决方案,用于从几乎任何复杂的电子表格中提取有用的数据&#xf…

自动驾驶系列—告别眩光烦恼:智能大灯如何守护夜间行车安全

🌟🌟 欢迎来到我的技术小筑,一个专为技术探索者打造的交流空间。在这里,我们不仅分享代码的智慧,还探讨技术的深度与广度。无论您是资深开发者还是技术新手,这里都有一片属于您的天空。让我们在知识的海洋中…