ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

快速测试-ZLMediaKit

快速测试-ZLMediaKit 更新已优化至https://github.com/zhuyifeiRuichuang/ZLMediaKit此仓库内置了更完善的GitHub action可实现自动编译打包代码自动构建容器镜像自动部署测试提供了docker compose和k8s环境标准部署配置可本地稳定复现部署。可随时同步上游代码更新且稳定制作新版本。支持定制开发后手动触发打包。注意此方法由workbuddyhy3专家工具“Dockerfile生成专家” 生成。项目https://github.com/ZLMediaKit/ZLMediaKit快速测试打包和部署使用docker compose环境# 拉取项目代码gitclone https://github.com/ZLMediaKit/ZLMediaKit# 进入项目目录cdZLMediaKit创建文件Dockerfile# syntaxdocker/dockerfile:1# # ZLMediaKit 生产级 Dockerfile多阶段构建# 仓库: https://github.com/zhuyifeiRuichuang/ZLMediaKit## 构建说明:# 1. 主仓库从 GitHub 拉取子模块(ZLToolKit/media-server/jsoncpp 等)# 托管在 gitee.com构建机必须可访问 gitee.com。# 2. 如需改用「本地源码」构建把 builder 阶段的 git clone 段替换为:# COPY . /src# 并确保本地已执行 git submodule update --init --recursive。# 3. 推荐开启 BuildKit: DOCKER_BUILDKIT1 docker build ...# ############################################################# 阶段一构建编译 MediaServer############################################################FROM ubuntu:22.04 AS builder# ---- 构建参数可复现 / 可覆盖----ARGZLM_GIT_URLhttps://github.com/zhuyifeiRuichuang/ZLMediaKit.git ARGZLM_BRANCHmaster ARGZLM_COMMITARGCMAKE_BUILD_TYPERelease ARGENABLE_WEBRTCON ARGENABLE_OPENSSLON ARGENABLE_MP4ON ARGENABLE_HLSON ARGENABLE_SRTON ARGENABLE_APION ARGENABLE_TESTSOFF ENVDEBIAN_FRONTENDnoninteractive# ---- 构建依赖 ----# build-essential : gcc/g/make# cmake/pkg-config: 构建系统ubuntu22.04 自带 cmake 3.22满足 3.1.3# libssl-dev : HTTPS/WSS/RTSPS/RTMPS/WebRTC 加密传输# libsrtp2-dev : WebRTC 必需的 SRTP 库项目未内置必须系统提供否则 WebRTC 被自动关闭# git : 拉取代码与子模块# ccache : 加速重复构建RUN--mounttypecache,target/var/cache/apt,sharinglocked\apt-getupdate\apt-getinstall-y--no-install-recommends\build-essential\cmake\pkg-config\git\ccache\libssl-dev\libsrtp2-dev\rm-rf/var/lib/apt/lists/*# 启用 ccache 加速配合下方 cache mountENVPATH/usr/lib/ccache:${PATH}\CCACHE_DIR/root/.ccache WORKDIR /src# ---- 拉取源码与子模块 ----# 注意: 子模块来自 gitee.com需网络可达RUNgitclone--branch${ZLM_BRANCH}--single-branch${ZLM_GIT_URL}.\if[-n${ZLM_COMMIT}];thengitcheckout-q${ZLM_COMMIT};fi\gitsubmodule update--init--recursive# ---- 配置与编译 ----# 构建产物位于 release/linux/${CMAKE_BUILD_TYPE}/已包含# MediaServer、config.ini、www/、default.pem 等运行时所需文件RUN--mounttypecache,target/root/.ccache\cmake-S.-Bbuild\-DCMAKE_BUILD_TYPE${CMAKE_BUILD_TYPE}\-DENABLE_WEBRTC${ENABLE_WEBRTC}\-DENABLE_OPENSSL${ENABLE_OPENSSL}\-DENABLE_MP4${ENABLE_MP4}\-DENABLE_HLS${ENABLE_HLS}\-DENABLE_SRT${ENABLE_SRT}\-DENABLE_API${ENABLE_API}\-DENABLE_TESTS${ENABLE_TESTS}\cmake--buildbuild--targetMediaServer -j$(nproc)############################################################# 阶段二运行最小运行时############################################################FROM debian:bookworm-slim AS runtime ENVDEBIAN_FRONTENDnoninteractive# ---- 运行时依赖 ----# libssl3 : OpenSSLHTTPS/WSS/RTSPS 等# libsrtp2-1 : WebRTC SRTP与构建期 libsrtp2-dev 版本对应# ca-certificates: 出站 HTTPS / 可选管理后台# curl : 健康检查# libcap2-bin : 为二进制赋予绑定特权端口(1024)的能力从而可「非 root」运行RUN--mounttypecache,target/var/cache/apt,sharinglocked\apt-getupdate\apt-getinstall-y--no-install-recommends\libssl3\libsrtp2-1\ca-certificates\curl\libcap2-bin\rm-rf/var/lib/apt/lists/*# 创建非 root 用户RUNgroupadd-rzlm\useradd-r-gzlm-s/usr/sbin/nologin-d/opt/zlmediakit zlm# 拷贝构建产物二进制 配置 www 默认证书COPY--frombuilder /src/release/linux/Release/ /opt/zlmediakit/ WORKDIR /opt/zlmediakit# 赋予绑定特权端口能力使非 root 也能监听 80/443/554# 随后将目录归属非 root 用户RUNchown-Rzlm:zlm /opt/zlmediakit\setcapcap_net_bind_serviceep/opt/zlmediakit/MediaServerUSERzlm# ---- 暴露默认端口 ----# TCP : HTTP(80) HTTPS(443) RTSP(554) RTMP(1935) RTC(8000) 可选(10000)# UDP : RTC 媒体(8000) 可选(10000)# 端口均可在 config.ini 中修改修改后需同步调整下方 EXPOSE 与容器端口映射EXPOSE80/tcp443/tcp554/tcp1935/tcp8000/tcp10000/tcp\8000/udp10000/udp# ---- 健康检查 ----# 探测内置 HTTP 服务是否就绪返回任意 HTTP 状态码即视为存活# 不依赖 api.secret。如修改了 HTTP 端口请同步修改此处地址。HEALTHCHECK--interval30s--timeout5s --start-period15s--retries3\CMDcurl-s-o/dev/null --max-time4http://127.0.0.1/||exit1# 前台运行可用 -c 指定配置或用卷挂载覆盖 ./config.ini# 示例: docker run ... zlmediakit:local -c /opt/zlmediakit/config.iniENTRYPOINT[./MediaServer]CMD[]创建文件docker-compose.ymlservices: zlmediakit: build: context:.dockerfile: Dockerfile args: ZLM_BRANCH: master# ZLM_COMMIT: # 如需锁定到特定 commit取消注释并填入ENABLE_WEBRTC:ONimage: zlmediakit:local container_name: zlmediakit restart: unless-stopped ports: -80:80# HTTP-443:443# HTTPS-554:554# RTSP-1935:1935# RTMP-8000:8000# WebRTC TCP-8000:8000/udp# WebRTC UDP-10000:10000# 可选业务端口-10000:10000/udp# 可选业务端口volumes:# 挂载自定义配置推荐将宿主机 config.ini 覆盖容器内配置- ./config.ini:/opt/zlmediakit/config.ini:ro# 持久化录像/截图等写目录按需注意路径需与 config.ini 中配置一致# - ./record:/opt/zlmediakit/www/recordhealthcheck: test:[CMD,curl,-fsS,-o,/dev/null,http://127.0.0.1/]interval: 30s timeout: 5s retries:3start_period: 15s部署并自动构建dockercompose up-d
返回列表