freeswitch的docker构建过程

 

概述

Docker是一个开源的应用容器引擎,可以让开发者打包应用以及依赖包到一个轻量级、可移植的容器中,并在任何安装有Docker的机器上运行。

Docker 使你能够将应用程序与基础架构分开,从而可以快速交付软件。

借助 Docker,你可以与管理应用程序相同的方式来管理基础架构。

通过利用 Docker 的方法来快速交付,测试和部署代码,你可以大大减少编写代码和在生产环境中运行代码之间的延迟。

本文的目的是了解最基本的docker构建过程,以便掌握的docker基本知识和原理,暂不涉及dockerfile、compose、集群等信息。

开发环境

centos:CentOS release 7.0 (Final)或以上版本

freeswitch:v1.8.7

GCC:4.8.5

安装docker

yum remove docker \

                  docker-client \

                  docker-client-latest \

                  docker-common \

                  docker-latest \

                  docker-latest-logrotate \

                  docker-logrotate \

                  docker-selinux \

                  docker-engine-selinux \

                  docker-engine



yum install -y yum-utils device-mapper-persistent-data lvm2



yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo



yum makecache fast



yum -y install docker-ce



systemctl start docker

docker常用命令

docker version

docker images

docker ps

docker container ls

构建freeswitch的docker镜像

拉取最新的centos镜像

docker pull centos:centos7

查看

docker images

运行容器

docker run -itd --name centos7-test centos:centos7

通过exec命令进入centos容器

docker exec -it centos7-test /bin/bash

以下命令在dockers容器中运行

yum刷新

yum makecache

yum update

下载freeswitch1.8.7开发库源码

yum install git

git clone -b v1.8 https://github.com/signalwire/freeswitch.git freeswitch-1.8.7

cd  freeswitch-1.8.7

chmod 777 * -R

sh support-d/prereq.sh

./bootstrap.sh -j

./configure --enable-portable-binary --with-gnu-ld --with-python --with-erlang --with-openssl --enable-core-odbc-support --enable-zrtp

make

make install

修改 /usr/local/freeswitch/conf/autoload_configs/switch.conf.xml

    <!-- RTP port range -->

    <param name="rtp-start-port" value="10000"/>

    <param name="rtp-end-port" value="12000"/>

退出容器

exit

以下命令在docker宿主机运行

更新镜像文件

docker commit -m="fs1.8.7 register" -a="zr" centos7-test  zr/centos7-freeswitch1.8.7

启动注册容器

docker run -itd -p 192.168.0.152:5060:5060/udp -p 192.168.0.152:10000-12000:10000-12000/udp --name centos7-reg zr/centos7-freeswitch1.8.7 /usr/local/freeswitch/bin/freeswitch -nonat

测试

使用eyebean注册测试。

分别注册1001和1002用户。

使用1001拨打1002,可以呼通,1002可以正常接听。

遗留问题

媒体流有问题,双方没有声音。

挂机信令也有问题,无法送达对方。

初步判断是fs的local地址未设置造成。

另外,构建完成的docker镜像比较大,在网络上传输会比较慢,后期可以通过一些镜像瘦身的技术降低文件大小,使得发布包更加好用。


空空如常

求真得真

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Docker是一种容器化技术,可以帮助我们更轻松地部署和管理应用程序。而FreeSWITCH是一种开源的电话软交换解决方案,可以用于构建VoIP通信系统。如果我们想要在Docker容器中部署FreeSWITCH并开启WebSocket Secure(wss),可以按照以下步骤进行操作。 首先,我们需要创建一个Dockerfile文件,用于构建我们的FreeSWITCH容器。在Dockerfile中,我们可以指定所需的基础镜像,安装FreeSWITCH以及其他依赖项,并配置FreeSWITCH以支持WebSocket Secure连接。 以下是一个示例Dockerfile文件的内容: ``` # 使用官方的Debian作为基础镜像 FROM debian:latest # 安装依赖项 RUN apt-get update && apt-get install -y freeswitch # 配置FreeSWITCH COPY freeswitch.xml /etc/freeswitch/ COPY autoload_configs/modules.conf.xml /etc/freeswitch/autoload_configs/ # 开启wss RUN sed -i 's|<!-- <X-PRE-PROCESS transport="ws,wss"bind-params="key=cert.pem"/> -->|<X-PRE-PROCESS transport="ws,wss" bind-params="key=cert.pem"/>|' /etc/freeswitch/autoload_configs/event_socket.conf.xml # 暴露FreeSWITCH端口 EXPOSE 5060 5061 5080 8021 # 启动FreeSWITCH CMD ["freeswitch", "-nonat"] ``` 在上述Dockerfile文件中,我们使用了Debian作为基础镜像,并通过apt-get命令安装了FreeSWITCH和其他依赖项。我们还将freeswitch.xml和modules.conf.xml文件复制到了相应的配置目录,并使用sed命令修改了event_socket.conf.xml文件以开启wss支持。最后,我们通过EXPOSE命令暴露了FreeSWITCH的端口,并使用CMD命令启动FreeSWITCH。 接下来,我们可以使用docker build命令来构建我们的FreeSWITCH镜像。在命令行中,我们切换到包含Dockerfile的目录,并运行以下命令: ``` docker build -t freeswitch-wss . ``` 成功构建镜像后,我们可以使用docker run命令来运行容器。运行以下命令即可启动一个新的FreeSWITCH容器: ``` docker run -d -p 5060:5060 -p 5061:5061 -p 5080:5080 -p 8021:8021 freeswitch-wss ``` 现在,我们已经成功将FreeSWITCH部署到了一个Docker容器中,并开启了wss支持。我们可以通过HTTP请求或使用SIP软件来测试和使用FreeSWITCH的功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值