FreeSWITCH一键打包Docker镜像(源码编译)
FreeSwitch Docker 构建项目
本项目用于通过 Docker 容器化方式构建和部署 FreeSwitch 服务,包含所有必要的依赖项和编译脚本。
项目结构
.
├── docker/ # Docker 相关文件
│ ├── freeswitch-dev.dockerfile # FreeSwitch 开发环境 Dockerfile
│ ├── freeswitch.dockerfile # FreeSwitch 运行环境 Dockerfile
│ └── fs.yml # Docker Compose 配置文件
├── script/ # 编译脚本
│ ├── compile.sh # 依赖库编译脚本
│ └── compile_fs.sh # FreeSwitch 主程序编译脚本
├── fs.sh # 主要操作脚本
├── modules.conf # FreeSwitch 模块配置文件
└── sources/ # 源代码目录(运行时生成)
功能特性
- 基于 Debian Bookworm Slim 系统构建
- 集成 FreeSwitch v1.10.12 及其依赖库
- 支持多种编解码器(G729、OPUS、AMR等)
- 包含 UniMRCP 模块支持语音识别和文本转语音
- 支持多语言接口(Lua、Python3)
- 通过 Docker 容器化部署,环境隔离,易于部署和维护
依赖组件
- FreeSwitch v1.10.12
- Sofia-SIP v1.13.17
- Libfvad v1.0
- Spandsp
- UniMRCP
- BCG729 (G729 编解码器)
- 多种数据库支持(MariaDB、PostgreSQL)
- 多语言支持(Lua、Python3)
使用方法
初始化源代码
./fs.sh init freeswitch
该命令会下载 FreeSwitch 及其所有依赖库的源代码到 sources/
目录。
构建完整 FreeSwitch 镜像
./fs.sh pkg freeswitch
该命令会一键完成整个服务的编译构建工作,包括:
- 构建开发环境镜像
- 启动容器并编译所有依赖库
- 编译 FreeSwitch 主程序
- 构建运行时镜像
分步操作
# 构建 FreeSwitch Docker 基础镜像(生成编译环境)
./fs.sh build freeswitch# 启动 FreeSwitch Docker 容器
./fs.sh up freeswitch# 在镜像中编译所有源代码
./fs.sh compile freeswitch# 将编译好的程序打包到运行镜像
./fs.sh release freeswitch
进入容器调试
./fs.sh bash freeswitch
模块配置
项目通过 modules.conf 文件配置需要启用的 FreeSwitch 模块,可以根据需要启用或禁用相应模块。
版本控制
可以通过修改 fs.sh 脚本开头的变量来指定不同库的版本:
- FreeSwitch: v1.10.12
- Sofia-SIP: v1.13.17
- Libfvad: v1.0
注意事项
- 首次使用需要先运行
./fs.sh init freeswitch
下载源代码 - 构建过程需要较长时间和较大的磁盘空间
- 构建过程中会生成
.cached/
目录用于缓存编译结果 - 项目默认使用阿里云镜像源加速依赖安装
许可证
本项目基于 FreeSwitch 及其相关组件的开源许可证。