rtpengine build mr12.5.1 镜像

debian 版本

cat Dockerfile:

复制代码
FROM debian:bookworm-20230725 

RUN apt-get update && \
	apt-get dist-upgrade gnupg2 apt-utils lsb-release cmake curl iproute2 ca-certificates gcc g++ make build-essential libavfilter-dev \
    libevent-dev libpcap-dev libxmlrpc-core-c3-dev \
    libjson-glib-dev default-libmysqlclient-dev libhiredis-dev libssl-dev libopus-dev libmnl-dev libip6tc-dev libip4tc-dev libxtables-dev libiptc-dev libnftnl-dev\
    libcurl4-openssl-dev libavcodec-extra gperf libspandsp-dev libwebsockets-dev \
	git markdown pandoc \
	libbencode-perl libconfig-tiny-perl libcrypt-rijndael-perl libdigest-hmac-perl libio-socket-inet6-perl -yq

RUN cd /usr/src && git clone https://github.com/BelledonneCommunications/bcg729.git && cd /usr/src/bcg729 && cmake . &&  make && make install
RUN cd /usr/src && git clone https://github.com/sipwise/rtpengine.git -b mr12.5.1 && cd /usr/src/rtpengine/daemon && make && make install && cp /usr/src/rtpengine/utils/rtpengine-ctl /usr/bin

RUN cd / && rm -rf /usr/src/rtpengine /usr/src/bcg729

现在 rtpengine-ctl 可以用了

不过, build 出来有点大

回头研究下 alpine


顺便分享下 rtpengine.conf 样本:

rtpengine

table = 0

no-fallback = false

for userspace forwarding only:

table = -1

a single interface:

interface = lo

separate multiple interfaces with semicolons:

interface = internal/12.23.34.45;external/23.34.45.54

for different advertised address:

interface = 12.23.34.45!23.34.45.56

interface = any

listen-ng = localhost:2223

listen-tcp = 25060

listen-udp = 12222

interface for HTTP, WS and Prometheus

listen-http = 9101

listen-http = localhost:2225

listen-https = localhost:2226

https-cert =

https-key =

listen-cli = localhost:2224

timeout = 60

silent-timeout = 3600

tos = 184

control-tos = 184

control-pmtu = dont

delete-delay = 30

final-timeout = 10800

endpoint-learning = heuristic

reject-invalid-sdp = false

foreground = false

pidfile = /run/ngcp-rtpengine-daemon.pid

num-threads = 16

media-num-threads = 8

http-threads = 4

port-min = 30000

port-max = 40000

max-sessions = 5000

software-id = rtpengine

max-load = 5

max-cpu = 90

max-bandwidth = 10000000

scheduling = default

priority = -3

idle-scheduling = idle

idle-priority = 10

recording-dir = /var/spool/rtpengine

recording-method = proc

recording-format = raw

redis = 127.0.0.1:6379/5

redis-write = password@12.23.34.45:6379/42

redis-num-threads = 8

no-redis-required = false

redis-expires = 86400

redis-allowed-errors = -1

redis-disable-time = 10

redis-cmd-timeout = 0

redis-connect-timeout = 1000

b2b-url = http://127.0.0.1:8090/

xmlrpc-format = 0

janus-secret = ABC123

log-level = 6

log-stderr = false

log-facility = daemon

log-facility-cdr = local0

log-facility-rtcp = local1

debug-srtp = false

log-srtp-keys = false

dtls-cert-cipher = prime256v1

dtls-rsa-key-size = 2048

dtls-mtu = 1200

dtls-signature = sha-256

dtls-ciphers = DEFAULT:!NULL:!aNULL:!SHA256:!SHA384:!aECDH:!AESGCM+AES256:!aPSK

dtmf-no-log-injects = 0

graphite = 127.0.0.1:9006

graphite-interval = 60

graphite-prefix = foobar.

homer = 123.234.345.456:65432

homer-protocol = udp

homer-id = 2001

mysql-host = localhost

mysql-port = 3306

mysql-user = mysql

myser-pass = mysql

mysql-query = select data from voip.files where id = %llu

dtx-delay = 50

max-dtx = 600

dtx-buffer = 5

dtx-lag = 100

dtx-shift = 0

amr-dtx = native

dtx-cn-params = 60

silence-detect = 0.05

cn-payload = 60

sip-source = false

dtls-passive = false

mqtt-host = localhost

mqtt-port = 1883

mqtt-tls-alpn = mqtt

mqtt-id =

mqtt-user = foo

mqtt-pass = bar

mqtt-capath =

mqtt-cafile =

mqtt-certfile =

mqtt-keyfile =

mqtt-publish-qos = 0

mqtt-publish-topic = rtpengine

mqtt-publish-interval = 5000

mqtt-publish-scope = media

mos = CQ

poller-per-thread = false

socket-cpu-affinity = -1

rtcp-interval = 5000

rtpengine-testing

table = -1

interface = 10.15.20.121

listen-ng = 2223

foreground = true

log-stderr = true

log-level = 7


试试 alpine

cat Dockerfile:

复制代码
FROM alpine:3.21 AS builder
RUN apk --update add build-base git pkgconf perl gperf glib-dev ffmpeg-dev openssl-dev \
    libevent-dev libpcap-dev spandsp-dev json-glib-dev hiredis-dev xmlrpc-c-dev opus-dev libwebsockets-dev\
    mariadb-connector-c-dev cmake libmnl-dev libnftnl-dev pandoc markdown
RUN git clone https://github.com/sipwise/rtpengine -b mr12.5.1 && \
	git clone https://github.com/BelledonneCommunications/bcg729 && \
	cd bcg729 && cmake . && make && make install && cd .. && \
	cd rtpengine/daemon && with_iptables_option=no make

FROM alpine:3.21
RUN apk --update add build-base glib-dev ffmpeg-dev openssl-dev \
    libevent-dev libpcap-dev spandsp-dev json-glib-dev hiredis-dev xmlrpc-c-dev opus-dev libwebsockets-dev\
    mariadb-connector-c-dev libmnl-dev libnftnl-dev 
COPY --from=builder /rtpengine/daemon/rtpengine /usr/bin
# COPY --from=builder /usr/local/lib64/libbcg729.so.0 /usr/lib/
相关推荐
KIDULT°4 小时前
MySQL系列 (1):数据库原理
运维·数据库·mysql·云计算
wewowilling7 小时前
认识微服务
java·运维·微服务·springcloud
玖石书7 小时前
Ubuntu 24.04 UFW 全命令攻略:从入门到端口开放实战
linux·运维·ubuntu
weifont9 小时前
自动化抓取和上架商品:能不动手,就少动手
运维·前端·自动化
拂拉氏9 小时前
【知识讲解】 Linux之动静态库的了解
linux·运维·服务器·动静态库
Mikko710 小时前
Linux 重启后日志没了?进程被 OOM 杀了去哪看?logrotate 之后日志还往旧文件写?三台真机实测日志与性能排查
linux·运维·centos
光依旧10 小时前
发版就掉请求?Spring Boot优雅停机的四步
运维·spring boot·nginx·高可用·优雅停机·mcp server
yichengerp11 小时前
电子行业常用erp系统有哪些?推荐适合中小电子厂的易呈erp软件,操作简单,易落地
大数据·运维·人工智能·云计算·制造
天国梦12 小时前
国密门禁品牌怎么选?2026年最新3个避坑要点
运维·服务器·数据库·python
信可维13 小时前
自动化操作多平台账号:登录态、双会话与 User Data 的 3 个坑
运维·自动化