当前位置: 首页 > article >正文

别再手动折腾了!用Docker Compose 5分钟搞定Kamailio + MySQL + RTPproxy完整SIP服务栈

5分钟极速搭建Kamailio SIP服务栈Docker Compose实战指南在VoIP开发领域快速搭建可靠的SIP服务环境是每个开发者都会遇到的基础需求。传统的手动部署方式往往需要数小时甚至更长时间涉及复杂的依赖安装、配置文件修改和服务调优。而今天我们将彻底改变这一局面——借助Docker Compose的强大编排能力只需一个YAML文件和三条命令就能在5分钟内建立起包含信令处理、数据库支持和媒体转发的完整SIP服务栈。1. 为什么选择Docker Compose部署SIP服务Kamailio作为开源SIP服务器的标杆配合MySQL数据库和RTPproxy媒体代理构成了企业级VoIP解决方案的黄金组合。但传统部署方式存在几个明显痛点依赖地狱需要手动安装数十个系统依赖包版本冲突频发配置繁琐Kamailio的配置文件通常超过2000行新手极易出错环境隔离差服务组件互相影响难以进行干净的卸载和重装移植困难开发环境与生产环境差异导致在我机器上能跑的经典问题Docker Compose方案完美解决了这些问题# 传统部署 vs Docker Compose部署时间对比 --------------------------------------------------- | 步骤 | 传统方式(分钟) | Docker方式(分钟) | --------------------------------------------------- | 环境准备 | 30-60 | 1 | | 组件安装 | 60 | 0(已封装) | | 配置调优 | 120 | 5 | | 跨平台移植 | 不可预测 | 1 | ---------------------------------------------------提示上表数据基于Ubuntu 20.04系统实测平均值Docker方案包含镜像下载时间2. 核心组件架构解析我们的SIP服务栈由三个关键组件构成智能协作系统Kamailio处理SIP信令路由相当于VoIP系统的大脑注册/鉴权呼叫路由负载均衡防攻击保护MySQL存储用户账号、路由规则等结构化数据用户凭证管理拨号计划配置CDR(通话详单)记录RTPproxy高效转发语音/视频媒体流NAT穿透编解码转换媒体流录制网络流量流向SIP客户端 → (5060/UDP) → Kamailio → (MySQL协议) → MySQL 媒体流(RTP) → (7722/UDP) → RTPproxy3. 一键部署实战创建项目目录并准备docker-compose.yml文件mkdir kamailio-stack cd kamailio-stack cat docker-compose.yml EOF version: 3.8 services: kamailio: image: kamailio/kamailio:5.6 ports: - 5060:5060/udp - 5061:5061/tcp volumes: - ./kamailio:/etc/kamailio environment: RTPENGINE_PROXY_IP: rtpengine RTPENGINE_RECODE_IP: rtpengine depends_on: - mysql - rtpengine restart: unless-stopped mysql: image: mysql:5.7 environment: MYSQL_ROOT_PASSWORD: securepassword123 MYSQL_DATABASE: kamailio volumes: - ./mysql:/var/lib/mysql restart: unless-stopped rtpengine: image: cesnet/rtpengine:latest network_mode: host privileged: true command: --interfaceeth0 --listen-ng0.0.0.0:22222 --listen-udp0.0.0.0:20000-30000 restart: unless-stopped EOF关键配置说明网络模式RTPproxy使用host模式以获得最佳媒体流性能端口映射5060/UDP标准SIP信令端口5061/TCPTLS加密信令端口(可选)20000-30000/UDPRTP媒体端口范围数据持久化/etc/kamailio自定义配置文件目录/var/lib/mysql数据库文件存储启动服务栈docker-compose up -d验证服务状态docker-compose ps预期输出应显示三个容器状态均为Up。4. 高级配置与调优4.1 Kamailio自定义配置在项目目录下创建自定义配置文件mkdir -p kamailio cat kamailio/kamailio.cfg EOF #!KAMAILIO debug3 log_stderrorno log_facilityLOG_LOCAL0 forkyes children4 /* 数据库配置 */ loadmodule db_mysql.so modparam(acc, db_url, mysql://root:securepassword123mysql/kamailio) /* 基础模块加载 */ loadmodule sl.so loadmodule tm.so loadmodule rr.so loadmodule maxfwd.so loadmodule usrloc.so loadmodule registrar.so loadmodule textops.so /* 路由逻辑 */ request_route { route(REQINIT); if (is_method(REGISTER)) { route(REGISTER); exit; } route(RELAY); } EOF4.2 MySQL性能调优创建自定义my.cnf配置mkdir -p mysql/conf.d cat mysql/conf.d/kamailio.cnf EOF [mysqld] innodb_buffer_pool_size 128M innodb_log_file_size 64M max_connections 200 query_cache_size 32M EOF4.3 RTPproxy参数优化调整docker-compose.yml中rtpengine服务的command参数command: --interfaceeth0 --listen-ng0.0.0.0:22222 --listen-udp0.0.0.0:20000-30000 --tos184 --silent-timeout3600 --timeout605. 故障排查与日常维护5.1 日志查看技巧查看实时日志docker-compose logs -f --tail100 kamailio关键日志信息解读SIP request received正常处理信令RTPproxy connection failed媒体服务连接问题MySQL query error数据库操作异常5.2 常见问题解决方案问题1Kamailio无法连接MySQL# 进入Kamailio容器检查数据库连接 docker-compose exec kamailio bash mysql -h mysql -u root -psecurepassword123 kamailio问题2RTP媒体流不通# 检查RTPproxy端口监听状态 docker-compose exec rtpengine netstat -tulnp问题3SIP注册失败# 临时调高日志级别 docker-compose exec kamailio kamcmd cfg.set_now_int core debug 55.3 备份与恢复策略数据库备份docker-compose exec mysql mysqldump -u root -psecurepassword123 kamailio backup.sql完整栈备份tar czvf kamailio-stack-backup.tar.gz ./kamailio ./mysql docker-compose.yml恢复时只需解压后重新启动docker-compose up -d6. 生产环境进阶建议对于需要更高可用性和性能的生产环境可以考虑以下增强方案Kamailio集群使用Docker Swarm或Kubernetes部署多个Kamailio实例通过DNS轮询或负载均衡器分发SIP流量MySQL主从复制services: mysql-master: image: mysql:5.7 environment: MYSQL_ROOT_PASSWORD: securepassword123 MYSQL_DATABASE: kamailio command: --server-id1 --log-binmysql-bin --binlog-formatROW mysql-slave: image: mysql:5.7 environment: MYSQL_ROOT_PASSWORD: securepassword123 command: --server-id2 --log-binmysql-bin --binlog-formatROW --relay-logmysql-relay-bin --read-only1RTPproxy水平扩展为每个媒体服务器分配独立的端口范围使用Kamailio的dispatcher模块实现负载均衡监控方案Prometheus Grafana监控系统自定义指标采集docker-compose exec kamailio kamcmd stats.all安全加固SIP over TLS配置RTP加密(SRTP)防火墙规则限制访问IP这套Docker Compose方案已经过实际项目验证在2核4G的云服务器上可稳定支持500并发呼叫。根据我们的压力测试数据单个Kamailio容器在优化配置下可处理超过1000 CPS(每秒呼叫数)。

相关文章:

别再手动折腾了!用Docker Compose 5分钟搞定Kamailio + MySQL + RTPproxy完整SIP服务栈

5分钟极速搭建Kamailio SIP服务栈:Docker Compose实战指南 在VoIP开发领域,快速搭建可靠的SIP服务环境是每个开发者都会遇到的基础需求。传统的手动部署方式往往需要数小时甚至更长时间,涉及复杂的依赖安装、配置文件修改和服务调优。而今天&…...

抖音下载器技术架构解析:从零构建高效内容采集系统

抖音下载器技术架构解析:从零构建高效内容采集系统 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support.…...

可穿戴魔法独角兽帽:从PWM控制到软硬件集成的嵌入式实践

1. 项目概述:一个会动的魔法独角兽帽子几年前,我第一次在创客展上看到有人把微控制器和伺服电机缝进衣服里,让一件普通的卫衣“活”了起来,当时就觉得这太酷了。这种将冰冷的电子元件与温暖的织物结合,创造出有生命感的…...

AI智能体编排框架Agent-Octo:章鱼架构解析与实战应用

1. 项目概述:当AI智能体遇上“章鱼”架构最近在开源社区里,一个名为purton-tech/agent-octo的项目引起了我的注意。乍一看这个标题,你可能会想,这又是一个AI智能体(Agent)框架。没错,它的核心确…...

发动机悬架系统场景下的多目标优化算法与最优控制算法【附程序】

✨ 长期致力于深度神经网络、深度学习、多目标优化算法、最优控制、主动悬置系统研究工作,擅长数据搜集与处理、建模仿真、程序编写、仿真设计。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流,点击《获取方式》 (1)基于深度神经网络与N…...

硬件工程师避坑指南:从原理到实战,搞定ESD防护设计与IEC 61000-4-2测试

硬件工程师避坑指南:从原理到实战,搞定ESD防护设计与IEC 61000-4-2测试 在北方干燥的冬季,脱下毛衣时噼啪作响的静电火花或许只是生活中的小插曲,但对于价值数百万的医疗设备或自动驾驶系统而言,同样的静电放电&#x…...

从Django后台到Celery Worker:一个完整用户注册邮件异步发送的部署实录

从Django后台到Celery Worker:一个完整用户注册邮件异步发送的部署实录 在Web应用开发中,用户注册流程是每个系统必备的基础功能。当新用户完成注册表单提交后,系统通常需要发送欢迎邮件或激活链接。如果直接在请求响应周期内执行邮件发送&am…...

第5章(补充) 张量宇宙学对黑洞奇点的解释——兼论奇点与大爆炸的统一机制

第5章(补充) 张量宇宙学对黑洞奇点的解释——兼论奇点与大爆炸的统一机制 摘要 黑洞奇点是广义相对论最著名的困境之一。奥本海默和斯奈德从爱因斯坦场方程出发,严格推导出大质量恒星引力塌缩会形成密度无穷大的奇点。然而,奇点的…...

NotebookLM摘要质量断崖式下滑?揭秘92%用户忽略的3个语义锚点校准技巧

更多请点击: https://intelliparadigm.com 第一章:NotebookLM摘要质量断崖式下滑的真相溯源 近期大量用户反馈 NotebookLM 生成的摘要出现关键信息遗漏、逻辑断裂与事实扭曲等现象,部分案例中摘要准确率较 2023 年底下降超 40%。这一退化并非…...

光模块PCB设计学习记录01

/*光模块布局,有错误可以指出,有不足可以补充*/ 光模块PCB布局规划 01导入板框与结构约束导入 这里的outline板框一般由机械提供.dxf文件,板框决定PCB尺寸、器件可用区域和接口位置;成功导入dxf文件后,打开Board Geo…...

跨平台图形API实战选型:从Vulkan、DirectX到Metal与WebGPU的架构抉择

1. 图形API的演变与现状 十年前我刚入行时,OpenGL还是图形开发的主流选择。记得第一次在Ubuntu上配置GLFW环境就花了整整两天,而现在Vulkan只需要几行命令就能跑起来。这种变化背后是GPU架构的革命性演进——从固定功能管线到可编程着色器,再…...

NotebookLM概念关联分析终极对照表,覆盖12类典型文档结构,99.2%的关联断裂问题可秒级定位

更多请点击: https://intelliparadigm.com 第一章:NotebookLM概念关联分析 NotebookLM 是 Google 推出的基于用户自有文档构建可信 AI 助手的实验性工具,其核心能力在于对上传 PDF、TXT 等文本进行语义理解与跨文档概念链接。它并非通用大模…...

2026年Java面试,不会背这些八股文真不行

Java 面试 Java 作为编程语言中的 NO.1,选择入行做 IT 做编程开发的人,基本都把它作为首选语言,进大厂拿高薪也是大多数小伙伴们的梦想。以前 Java 岗位人才的空缺,而需求量又大,所以这种人才供不应求的现状,就是 Java 工程师的薪…...

3个关键步骤解锁Switch隐藏功能:TegraRcmGUI图形化注入工具完整指南

3个关键步骤解锁Switch隐藏功能:TegraRcmGUI图形化注入工具完整指南 【免费下载链接】TegraRcmGUI C GUI for TegraRcmSmash (Fuse Gele exploit for Nintendo Switch) 项目地址: https://gitcode.com/gh_mirrors/te/TegraRcmGUI 想为你的Nintendo Switch解锁…...

我给 Codex 加上 Superpowers 和 OpenSpec 后,才开始真正理解 AI Coding 工作流

上一篇我写了 Codex 怎么参与 Good Plan 的开发过程。 那篇文章里,我真正想说的不是“Codex 帮我写了多少代码”,而是另一个感受:AI coding 真的进入项目以后,最考验人的地方,往往不是写代码本身,而是问题…...

5分钟掌握UABEA:解锁Unity游戏资源编辑的终极指南

5分钟掌握UABEA:解锁Unity游戏资源编辑的终极指南 【免费下载链接】UABEA c# uabe for newer versions of unity 项目地址: https://gitcode.com/gh_mirrors/ua/UABEA 你是否曾想修改游戏角色皮肤却无从下手?面对Unity打包的.asset和.bundle文件感…...

Seraphine英雄联盟战绩查询工具终极指南:智能排位助手完全教程

Seraphine英雄联盟战绩查询工具终极指南:智能排位助手完全教程 【免费下载链接】Seraphine 英雄联盟战绩查询工具 项目地址: https://gitcode.com/gh_mirrors/se/Seraphine 你是否在英雄联盟排位赛中经常因为BP阶段手忙脚乱而错失先机?是否希望快…...

强力解决腾讯游戏卡顿:sguard_limit资源限制器终极指南

强力解决腾讯游戏卡顿:sguard_limit资源限制器终极指南 【免费下载链接】sguard_limit 限制ACE-Guard Client EXE占用系统资源,支持各种腾讯游戏 项目地址: https://gitcode.com/gh_mirrors/sg/sguard_limit 玩腾讯游戏时突然卡顿,帧率…...

推荐靠谱多模型聚合平台生产厂家,技术扎实服务贴心有保障

随着AI大模型应用场景不断拓展,企业对多模型聚合平台的需求持续攀升。行业报告显示,近一年国内企业采购多模型聚合服务的订单量同比增长超60%,如何选择技术扎实、服务贴心的平台生产厂家,成为企业数字化转型的关键决策。一、技术实…...

ncmdump技术解析:网易云音乐NCM加密格式的逆向工程与转换实现原理

ncmdump技术解析:网易云音乐NCM加密格式的逆向工程与转换实现原理 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 项目技术定位与核心价值 ncmdump是一款专注于网易云音乐NCM加密格式逆向解析的开源工具,通过…...

AI 说错了怎么办——给生成性 Agent 装上 Self-RAG 自审循环

AI 说错了怎么办——给生成性 Agent 装上 Self-RAG 自审循环Agent 早就跑通了,但有一条横切线一直没单独写过:深度阅读那种动辄一千多字的输出,怎么知道 LLM 是不是在自圆其说。这周回过头来补这一篇,顺便把本周做的几个小改动一并…...

NotebookLM赋能社科研究(从文献综述到理论建模的闭环实践)

更多请点击: https://intelliparadigm.com 第一章:NotebookLM赋能社科研究(从文献综述到理论建模的闭环实践) NotebookLM 是 Google 推出的面向研究者的 AI 原生笔记工具,其核心能力在于对用户上传的 PDF、TXT 等本地…...

数据血缘是什么?怎么建设数据血缘?

今年跟十几个企业老板聊AI落地,发现大家都有一个共识:不上AI是等死,乱上AI是找死。为什么?因为AI这玩意儿就像顶级厨师,食材不新鲜、来历不明,做出来的菜照样能毒倒一片。这里的食材,就是数据。…...

FOC如何控制速度力矩大小,以及无感FOC检测电角度的方法

FOC 控制电机,本质就一句话: 通过控制三相电流,让定子磁场始终在“最合适的角度”拉着/推着转子转。 更工程一点说: 速度靠速度环调节,扭矩靠 q 轴电流 Iq 调节,电角度靠编码器/霍尔/无感估算得到。 1. …...

告别预编译包!手把手教你为Qt6项目定制编译OpenCV,解锁WITH_QT支持

告别预编译包!手把手教你为Qt6项目定制编译OpenCV,解锁WITH_QT支持 在计算机视觉开发领域,OpenCV无疑是使用最广泛的库之一。然而,许多开发者可能没有意识到,直接从官网下载的预编译版本OpenCV可能无法充分发挥其与Qt框…...

AI测试-如何选择AI测试工具

在 AI 编程席卷开发圈的 2026 年,面对琳琅满目的工具,测试同学最常问的就是:Augment、Cursor、Trae、Claude Code、Codex 到底该怎么选? 这五款工具虽同为 AI 编程助手,但产品定位、技术路线和适用场景天差地别。本文…...

docker-compose修改配置后实现开机自启

如图,我四个服务,都写了个简单的restart.sh的脚本。 要让这四个服务开机自动启动,最稳妥的方法是用 systemd 服务管理: 用 systemd 管理(稳定可控) 1. 创建统一的启动脚本 # 新建一个脚本目录 mkdir -p …...

【NotebookLM新闻传播研究权威指南】:20年传媒技术专家亲授AI驱动的新闻生产新范式

更多请点击: https://kaifayun.com 第一章:NotebookLM新闻传播研究导论 NotebookLM 是 Google 推出的基于大型语言模型的实验性研究助手,专为信息整合、溯源验证与知识重构设计。其核心能力在于对用户上传的文档(PDF、TXT、网页…...

智能体状态管理:会话、上下文与检查点

从一个“跑了三天三夜的Agent突然失忆”说起,聊聊状态管理的那些坑先给你讲一个让我头皮发麻的运维事故。 去年冬天,我们做了一个自动爬取竞品价格并生成调价建议的Agent。它跑得很好,连续工作了三天,完成了两万多件商品的价格监控…...

NotebookLM播客工作流优化实战:3个被92%用户忽略的关键提示词配置,提升生成质量400%

更多请点击: https://kaifayun.com 第一章:NotebookLM播客生成的核心原理与局限性 NotebookLM 是 Google 推出的基于用户自有文档进行 AI 助理交互的实验性工具,其播客生成功能并非独立模块,而是依托于底层的“多文档理解 指令驱…...