
mmtnrw/freeswitchfreeswitch-docker 是一个基于 Alpine Linux 的 Docker 化 FreeSWITCH 镜像,旨在提供轻量级、可移植的 FreeSWITCH 软交换服务部署方案。该镜像将开源通信引擎 FreeSWITCH 与容器化技术结合,支持快速搭建 IP 语音(VoIP)、视频通信、电话系统等实时通信应用,适用于开发、测试及生产环境的高效部署。
通过 Docker Hub 拉取镜像(假设镜像名称为 freeswitch-docker):
bashdocker pull freeswitch-docker
bashdocker run -d \ --name freeswitch \ --restart=always \ -p 5060:5060/udp \ # SIP UDP 端口(默认) -p 5060:5060/tcp \ # SIP TCP 端口(可选,用于 TLS 或可靠传输) -p 8080:8080/tcp \ # WebRTC signaling/API 端口(默认) -p ***-***:***-***/udp \ # RTP 媒体端口范围(根据并发需求调整) -v /host/path/freeswitch/conf:/etc/freeswitch \ # 挂载自定义配置文件 -v /host/path/freeswitch/log:/var/log/freeswitch \ # 挂载日志目录 -v /host/path/freeswitch/recordings:/var/lib/freeswitch/recordings \ # 挂载录音目录 freeswitch-docker
创建 docker-compose.yml 文件:
yamlversion: '3' services: freeswitch: image: freeswitch-docker container_name: freeswitch restart: always ports: - "5060:5060/udp" # SIP UDP - "5060:5060/tcp" # SIP TCP - "8080:8080/tcp" # WebRTC/API - "***-***:***-***/udp" # RTP 端口 volumes: - ./conf:/etc/freeswitch # 配置文件目录 - ./log:/var/log/freeswitch # 日志目录 - ./recordings:/var/lib/freeswitch/recordings # 录音存储 environment: - FS_LOG_LEVEL=info # 日志级别(可选:debug/info/warn/error) - FS_SIP_PORT=5060 # 自定义 SIP 端口(默认 5060)
启动服务:
bashdocker-compose up -d
| 端口/协议 | 用途说明 | 备注 |
|---|---|---|
| 5060/udp | SIP 信令(UDP 模式,默认) | 标准 SIP 端口 |
| 5060/tcp | SIP 信令(TCP 模式,可选) | 用于需要可靠传输的场景 |
| 8080/tcp | WebRTC signaling/HTTP API | FreeSWITCH 内置 HTTP 服务 |
| -/udp | RTP 媒体流传输(默认范围) | 根据并发通话数调整范围 |
| 环境变量名 | 取值范围 | 说明 |
|---|---|---|
| FS_LOG_LEVEL | debug/info/warn/error | 设置日志输出级别,默认 info |
| FS_SIP_PORT | 1-65535 | 自定义 SIP 信令端口,默认 5060 |
| FS_PASSWORD | 字符串 | FreeSWITCH 管理控制台密码 |
| 容器内路径 | 用途说明 | 建议挂载方式 |
|---|---|---|
| /etc/freeswitch | FreeSWITCH 配置文件目录 | 本地目录挂载(自定义配置) |
| /var/log/freeswitch | 运行日志存储目录 | 本地目录挂载(日志持久化) |
| /var/lib/freeswitch/recordings | 通话录音存储目录 | 本地目录挂载(数据备份) |
配置文件结构:通过挂载 /etc/freeswitch 目录,可修改核心配置文件,如:
sip_profiles/:SIP 协议配置(如外部配置 external.xml、内部配置 internal.xml)dialplan/:拨号计划配置(定义呼叫路由规则)vars.xml:全局变量配置(如端口、编解码、网络参数)配置生效:修改配置文件后,需重启容器使配置生效:
bashdocker restart freeswitch
docker pull freeswitch-docker 获取最新镜像,更新前备份配置文件。manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务