使用docker构建可动态启动的FreeSWITCH实例
- 根据提供的IP、端口等信息启动服务
- 访问指定的数据库,获取信息并进行通话恢复
一、整体结构

二、具体实现
1、FreeSWICH支持MySQL

安装命令如下:
cd mysql-connector-odbc-5.3.14-linux-debian10-x86-64bit/lib
cp libmyodbc5* /usr/local/lib/
./myodbc-installer -d -a -n "MYSQL" -t "DRIVER=/usr/local/lib/libmyodbc5w.so;SETUP=/usr/lib/libmyodbc5w.so"
[MYSQL]
Driver=/usr/local/lib/libmyodbc5w.so
SETUP=/usr/local/lib/libmyodbc5w.so
UsageCount=1
[fsdb]
Driver=MYSQL
Description=database for mysql
SERVER=192.168.137.1
CHARSET=UTF8
PORT=3306
USER=root
PASSWORD=123456
Database=fsdb
OPTION=67108864

3)编译、安装及配置odbc-dsn
./configure --enable-core-odbc-support
<param name="odbc-dsn” value=”fsdb:root:123456”/>
<param name="core-db-dsn” value=”fsdb:root:123456”/>
<X-PRE-PROCESS cmd="set" data="json_db_handle=odbc://fsdb:root:123456"/>
2、docker容器支持绑定非本机ip地址
arping -U 192.168.137.201 -I eth0 -w 2
3、配置文件动态获取运行参数
3.1 xml关键变量需要通过环境变量设置
<X-PRE-PROCESS cmd="env-set" data="force_local_ip_v4=$docker_fs_local_ip_v4"/>
其中,docker_fs_local_ip_v4是Linux系统环境变量。


3.2 设置启动映射conf目录
3.3 动态生成odbc配置信息

3.4、lua脚本动态获取全局变量
my_globalvar = freeswitch.getGlobalVariable("varname")

4、Dockerfile及启动脚本
1)需要在Dockefile中安装依赖文件并进行打包;
2)启动时需要指定docker的环境信息;
三、运行效果
docker_fs_local_ip_v4=192.168.137.201
docker_fs_external_ip_v4=192.168.137.201
docker_fs_internal_sip_port=15060
docker_fs_external_sip_port=15080
docker_fs_rtp_start_port=20000
docker_fs_rtp_end_port=30000
docker_fs_odbc_dsn=fsdb
docker_fs_odbc_dsn_full=fsdb:root:123456
docker_fs_odbc_ip=192.168.137.1
docker_fs_odbc_port=3306
docker_fs_switch_name=fstest1


运行效果视频可以从如下途径获取:
四、资源下载

使用docker构建可动态启动的FreeSWITCH实例的更多相关文章
- docker挡板程序实现启动多个实例进程
启动服务: docker-compose restart
- freeswitch的docker构建过程
概述 Docker是一个开源的应用容器引擎,可以让开发者打包应用以及依赖包到一个轻量级.可移植的容器中,并在任何安装有Docker的机器上运行. Docker 使你能够将应用程序与基础架构分开,从而可 ...
- 使用Spring Cloud和Docker构建微服务架构
原文:https://dzone.com/articles/microservice-architecture-with-spring-cloud-and-do 作者:Alexander Lukyan ...
- 使用 Spring Cloud 和 Docker 构建微服务架构
如何使用Spring Boot.Spring Cloud.Docker和Netflix的一些开源工具来构建一个微服务架构. 本文通过使用Spring Boot.Spring Cloud和Docker构 ...
- 视频私有云实战:基于Docker构建点播私有云平台
私有云是为一个客户单独使用而构建的,因而提供对数据.安全性和服务质量的最有效控制.前置条件是客户拥有基础设施,并可以使用基础设施在其上部署应用程序.其核心属性是专有的资源.本篇文章将会结合网易云信的实 ...
- angular 构建可以动态挂载的配置服务
angular 构建可以动态挂载的配置服务 Intro 在 angular 中可以指定 environment 来区分不同环境下的配置,然而 environment 中的配置会在打包时是固定的,想要像 ...
- Spring Boot打包瘦身 Docker 使用全过程 动态配置、日志记录配置
springBoot打包的时候代码和jar包打包在同一个jar包里面,会导致jar包非常庞大,在不能连接内网的时候调试代码,每次只改动了java代码就需要把所有的jar包一起上传,导致传输文件浪费了很 ...
- Docker构建Python Web环境
出于寻找Docker对Python相关项目部署的学习,找到腾讯课堂NEXT公开课中[Docker构建Python Web环境]的课程,本文对其进行内容梳理及知识点汇总. 该课程总计6小时左右,是个适合 ...
- 基于 Docker 构建轻量级 CI 系统:Gitea 与 Woodpecker CI 集成
WoodpeckerCI 是一个由社区维护的 DroneCI 分支,使用 Apache License 2.0 许可证发布.社区版进一步扩展了 pipeline 的功能特性.支持对文件路径设置 pip ...
- 使用Docker构建持续集成与自动部署的Docker集群
为什么使用Docker " 从我个人使用的角度讲的话 部署来的更方便 只要构建过一次环境 推送到镜像仓库 迁移起来也是分分钟的事情 虚拟化让集群的管理和控制部署都更方便 hub.docke ...
随机推荐
- 狠狠地切割(Hard Version)
狠狠地切割(Hard Version) (https://www.luogu.com.cn/problem/P8889) 跟easy版非常像,但是数据太大开标记数组的话会爆所.以得转换一下 开一个ma ...
- 【FAQ】关于华为推送服务因营销消息频次管控导致服务通讯类消息下发失败的解决方案
一. 问题描述 使用华为推送服务下发IM消息时,下发消息请求成功且code码为80000000,但是手机总是收不到消息: 在华为推送自助分析(Beta)平台查看发现,消息发送触发了频控. 二. 问题原 ...
- Kubuesphere部署Ruoyi(三):持久化存储配置
按照如下教程配置NFS 先服务器: https://kubesphere.io/zh/docs/v3.3/reference/storage-system-installation/nfs-serve ...
- CS144 计算机网络 Lab2:TCP Receiver
前言 Lab1 中我们使用双端队列实现了字节流重组器,可以将无序到达的数据重组为有序的字节流.Lab2 将在此基础上实现 TCP Receiver,在收到报文段之后将数据写入重组器中,并回复发送方. ...
- TypeScript FromData添加数组
本文解决的是,如何向FromData添加对象数组. 在FormData中添加数据并使用Axios向后台请求数据,参数是列表对象File[] 结果接口请求时,数据变成了字符串: 试试直接使用File[] ...
- ubuntu20安装docker、redis、mysql及部署net6应用
一.更新系统软件包索引 sudo apt update 二.安装docker sudo apt install docker.io 三.在docker中安装Mysql 拉取mysql镜像 docker ...
- 2023-02-12:给定正数N,表示用户数量,用户编号从0~N-1, 给定正数M,表示实验数量,实验编号从0~M-1, 给定长度为N的二维数组A, A[i] = { a, b, c }表示,用户i报
2023-02-12:给定正数N,表示用户数量,用户编号从0~N-1, 给定正数M,表示实验数量,实验编号从0~M-1, 给定长度为N的二维数组A, A[i] = { a, b, c }表示,用户i报 ...
- 2022-08-12:方案1 : {7, 10}; xxxx : {a , b}; 1 2 3 4; FunnyGoal = 100; OffenseGoal = 130。 找到一个最少方案数,让Fu
2022-08-12:方案1 : {7, 10}: xxxx : {a , b}: 1 2 3 4: FunnyGoal = 100: OffenseGoal = 130. 找到一个最少方案数,让Fu ...
- 2022-07-31:给出一个有n个点,m条有向边的图, 你可以施展魔法,把有向边,变成无向边, 比如A到B的有向边,权重为7。施展魔法之后,A和B通过该边到达彼此的代价都是7。 求,允许施展一次魔法
2022-07-31:给出一个有n个点,m条有向边的图, 你可以施展魔法,把有向边,变成无向边, 比如A到B的有向边,权重为7.施展魔法之后,A和B通过该边到达彼此的代价都是7. 求,允许施展一次魔法 ...
- Spring源码:Bean生命周期(五)
前言 在上一篇文章中,我们深入探讨了 Spring 框架中 Bean 的实例化过程,该过程包括从 Bean 定义中加载当前类.寻找所有实现了 InstantiationAwareBeanPostPro ...