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

server/2024/11/20 15:49:35/

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_96">第三步:运行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.ppmy.cn/server/143497.html

相关文章

Linux-Apache

文章目录 Apache基础配置 🏡作者主页:点击! 🤖Linux专栏:点击! ⏰️创作时间:2024年11月19日12点20分 Apache Web服务器用来实现HTTP和相关TCP连接的处理,同时负责所提供资源的管理…

CFD 应用于分离过程:旋风分离器(第 1 部分)

在前两篇 CFD 文章中,我们讨论了 CFD 在生物加工行业中的作用。我们强调了混合对生物反应器性能的重要性。今天,我们将来个 180 的转变,讨论分离过程在不同行业中的重要性,特别是 CFD 在模拟此类过程中的作用。 在开始之前&#…

Linux远程连接服务

一、简介 1、类型 明文传输:Telnet、RSH等,目前非常少用 加密传输:SSH为主,已经取代明文传输 图形接口:XDMCP、VNC、XRDP等 2、功能作用 通过使用SSH,可以把所有传输的数据进行加密,这样“…

torchvision库在进行图片转换操作中报antialias参数没有显式设置会导致不同图片后端中的值不统一的警告信息

诸神缄默不语-个人CSDN博文目录 这个警告信息是我在直接调用已经封装好的视觉模型时出现的,位置是: D:\anaconda3\envs\venv_path\Lib\site-packages\torchvision\transforms\functional.py:1603 警告信息全文是: UserWarning: The default…

Mac 修改默认jdk版本

当前会话生效 这里演示将 Java 17 版本降低到 Java 8 查看已安装的 Java 版本: 在终端(Terminal)中运行以下命令,查看已安装的 Java 版本列表 /usr/libexec/java_home -V设置默认 Java 版本: 找到 Java 8 的安装路…

Java项目实战II基于微信小程序的实习记录(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。 一、前言 在当今竞争激烈的就业市场中&#xff0…

解决Xeyes: Error can‘t open display,远程X无法连通问题。

一、问题分析 提前申明: 本次实验使用REHL 8 进行操作! 客户机 A 为X-Client ,即远程X的客户端。 服务机 B 为X-Server,即远程X的服务端。 问题的所有操作均在已经配置好Xorg的前提下进行的,不知道不配置会有什么影响&…

Python模块、迭代器、正则表达式

一、Python模块 在我们编程的时候,先创建一个 .py 文件,这个文件就称之为 一个模块 Module。 使用模块的优点: 模块化编程,多文件编程 1.模块的使用 import语句 想要B.py文件中,使用A.py文件,只需要在…