步骤 1:创建 Docker Compose 文件
首先,需要创建一个 Docker Compose 文件来配置 Kamailio 容器、MySQL 容器和 RTPproxy 容器。可以使用以下命令创建一个名为 docker-compose.yml 的文件:
sudo nano docker-compose.yml
然后,将以下内容添加到该文件中:
version: '3'
services:
kamailio:
image: kamailio/kamailio
ports:
- "5060:5060/udp"
restart: always
depends_on:
- rtpengine
environment:
RTPENGINE_PROXY_IP: rtpengine
RTPENGINE_RECODE_IP: rtpengine
RTPENGINE_RECORDING_NODE_PORT: 22222
volumes:
- ./kamailio:/etc/kamailio
mysql:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: your_password_here
MYSQL_DATABASE: kamailio
volumes:
- ./mysql:/var/lib/mysql
restart: always
rtpengine:
image: rtpproxy/rtpproxy
network_mode: host
restart: always
privileged: true
command: "-u root -l <host-ip>:7722 -s udp:0.0.0.0:7722 -b 0.0.0.0 -F"
该 Docker Compose 文件将启动三个容器:Kamailio 容器、MySQL 容器和 RTPproxy 容器。Kamailio 容器将使用 RTPproxy 进行媒体流中继,MySQL 容器将使用挂载卷将数据存储在本地的 ./mysql 目录中,RTPproxy 容器将在主机上的 7722 端口运行并将所有 RTP 流路由到 Kamailio 容器。
注意,在环境变量中设置 RTPENGINE_PROXY_IP 和 RTPENGINE_RECODE_IP 是非常重要的。这些变量应设置为 RTPproxy 容器正在运行的 IP 地址或主机名,并保证两个容器之间能够互相通信。
步骤 2:启动容器
现在已经准备好了 Docker Compose 文件,可以使用以下命令启动 Kamailio、MySQL 和 RTPproxy 容器:
sudo docker-compose up -d
该命令将启动三个容器,并在后台运行。
步骤 3:测试容器
现在已经成功启动了 Kamailio、MySQL 和 RTPproxy 容器,可以使用 SIP 客户端软件(如 Zoiper)来验证 Kamailio 是否正常工作,并且是否能够正确地传输 RTP 流。可以使用以下命令来查看容器日志:
sudo docker-compose logs kamailio
日志输出将显示 Kamailio 容器正在监听 SIP 请求,并在接收到请求时进行响应。同时,RTPproxy 容器将开始接受并处理与 Kamailio 容器的所有 RTP 请求。
这就是一个完整的 Kamailio、MySQL 和 RTPproxy 容器部署的步骤和文档。