Docker部署freeswitch

1. clone配置文件到本地服务器

git clone https://github.com/BetterVoice/freeswitch-container.git

相关Dockerfile如下:

1# Jenkins. 2 3FROM ubuntu:16.04 4MAINTAINER Thomas Quintana <thomas@bettervoice.com> 5 6# Enable the Ubuntu multiverse repository. 7RUN echo "deb http://us.archive.ubuntu.com/ubuntu/ trusty multiverse" >> /etc/apt/source.list 8RUN echo "deb-src http://us.archive.ubuntu.com/ubuntu/ trusty multiverse">> /etc/apt/source.list 9RUN echo "deb http://us.archive.ubuntu.com/ubuntu/ trusty-updates multiverse" >> /etc/apt/source.list 10RUN echo "deb-src http://us.archive.ubuntu.com/ubuntu/ trusty-updates multiverse" >> /etc/apt/source.list 11# Enable videolan stable repository. 12RUN apt-get update && apt-get install -y software-properties-common 13RUN add-apt-repository ppa:videolan/stable-daily 14 15# Install Dependencies. 16# missing in 16.04 libmyodbc 17RUN apt-get update && apt-get install -y autoconf automake bison build-essential fail2ban gawk git-core groff groff-base erlang-dev libasound2-dev libavcodec-dev libavutil-dev libavformat-dev libav-tools libavresample-dev libswscale-dev liba52-0.7.4-dev libssl-dev libdb-dev libexpat1-dev libcurl4-openssl-dev libgdbm-dev libgnutls-dev libjpeg-dev libmp3lame-dev libncurses5 libncurses5-dev libperl-dev libogg-dev libsnmp-dev libtiff5-dev libtool libvorbis-dev libx11-dev libzrtpcpp-dev make portaudio19-dev python-dev snmp snmpd subversion unixodbc-dev uuid-dev zlib1g-dev libsqlite3-dev libpcre3-dev libspeex-dev libspeexdsp-dev libldns-dev libedit-dev libladspa-ocaml-dev libmemcached-dev libmp4v2-dev libpq-dev libvlc-dev libv8-dev liblua5.2-dev libyaml-dev libpython-dev odbc-postgresql sendmail unixodbc wget yasm libldap2-dev 18 19# Use Gawk. 20RUN update-alternatives --set awk /usr/bin/gawk 21 22# Install source code dependencies. 23ADD build/install-deps.sh /root/install-deps.sh 24WORKDIR /root 25RUN chmod +x install-deps.sh 26RUN ./install-deps.sh 27RUN rm install-deps.sh 28 29# Configure Fail2ban 30ADD conf/freeswitch.conf /etc/fail2ban/filter.d/freeswitch.conf 31ADD conf/freeswitch-dos.conf /etc/fail2ban/filter.d/freeswitch-dos.conf 32ADD conf/jail.local /etc/fail2ban/jail.local 33RUN touch /var/log/auth.log 34 35# Download FreeSWITCH. 36WORKDIR /usr/src 37ENV GIT_SSL_NO_VERIFY=1 38#RUN git clone https://freeswitch.org/stash/scm/fs/freeswitch.git -b v1.6 39RUN git clone https://github.com/signalwire/freeswitch.git -b v1.6 40 41# Bootstrap the build. 42WORKDIR freeswitch 43RUN ./bootstrap.sh 44 45# Enable the desired modules. 46ADD build/modules.conf /usr/src/freeswitch/modules.conf 47 48# Build FreeSWITCH. 49RUN ./configure --enable-core-pgsql-support 50RUN make 51RUN make install 52RUN make uhd-sounds-install 53RUN make uhd-moh-install 54# RUN make samples 55 56# Post install configuration. 57ADD sysv/init /etc/init.d/freeswitch 58RUN chmod +x /etc/init.d/freeswitch 59RUN update-rc.d -f freeswitch defaults 60ADD sysv/default /etc/default/freeswitch 61ADD build/bashrc /root/.bashrc 62ADD conf/fs_sync /bin/fs_sync 63 64# Add the freeswitch user. 65RUN adduser --gecos "FreeSWITCH Voice Platform" --no-create-home --disabled-login --disabled-password --system --ingroup daemon --home /usr/local/freeswitch freeswitch 66RUN chown -R freeswitch:daemon /usr/local/freeswitch 67 68# Add confile file 69ADD build/lib/* /usr/lib/ 70RUN ln /usr/lib/x86_64-linux-gnu/libpcre32.so.3.13.2 /usr/lib/libpcre.so.1 71RUN ln /usr/lib/x86_64-linux-gnu/libedit.so.2.0.53 /usr/lib/libedit.so.0 72RUN ln /usr/lib/libssl.so.1.0.0 /usr/lib/libssl.so.10 73RUN ln /usr/lib/libcrypto.so.1.0.0 /usr/lib/libcrypto.so.10 74ADD build/token.txt /usr/local/freeswitch/bin/ 75ADD build/robot.conf /usr/local/freeswitch/bin/ 76ADD build/alitoken_time.cfg /usr/local/freeswitch/bin/ 77ADD build/alitoken /usr/local/freeswitch/bin/ 78ADD build/mod_vmd.so /usr/local/freeswitch/mod/ 79ADD conf/* /usr/local/freeswitch/conf/ 80RUN chmod +x /usr/local/freeswitch/bin/alitoken 81 82# Create the log file. 83RUN touch /usr/local/freeswitch/log/freeswitch.log 84RUN chown freeswitch:daemon /usr/local/freeswitch/log/freeswitch.log 85 86# Open the container up to the world. 87EXPOSE 5060/tcp 5060/udp 5080/tcp 5080/udp 88EXPOSE 5066/tcp 7443/tcp 89EXPOSE 8021/tcp 90EXPOSE 64535-65535/udp 91 92# Start the container. 93CMD service snmpd start && service freeswitch start && tail -f /usr/local/freeswitch/log/freeswitch.log

2. 执行构建命令

docker build -t freeswitch .

3. 启动container

CID=$(sudo docker run --name freeswitch -p 5060:5060/tcp -p 5060:5060/udp -p 5080:5080/tcp -p 5080:5080/udp -p 8021:8021/tcp -p 7443:7443/tcp -v /usr/local/freeswitch-container/conf:/usr/local/freeswitch/conf freeswitch)

参数解读:

-d:后台运行;

-p:端口映射   上述左边5060为宿机端口,右边5060为容器内部端口;

-v:文件挂载   指定宿机目录映射到容器内部的目录(上述就是把宿机/usr/local/freeswitch-container/conf的地址映射到容器内部的/usr/local/freeswitch/conf目录里面去)

执行下面命令代替启动命令中加参数 -p 60535-65535:60535-65535/udp

1CIP=$(sudo docker inspect --format='{{.NetworkSettings.IPAddress}}' $CID) 2 3sudo iptables -A DOCKER -t nat -p udp -m udp ! -i docker0 --dport 60535:65535 -j DNAT --to-destination $CIP:60535-65535 4sudo iptables -A DOCKER -p udp -m udp -d $CIP/32 ! -i docker0 -o docker0 --dport 60535:65535 -j ACCEPT 5sudo iptables -A POSTROUTING -t nat -p udp -m udp -s $CIP/32 -d $CIP/32 --dport 60535:65535 -j MASQUERADE

启动container并进入container shell:

docker run -it freeswitch /bin/bash

进入container:

docker exec -it freeswitch /bin/bash  

查找容器:

docker ps -a

获取容器长ID:

docker inspect -f '{{.ID}}' freeswitch

拷贝本地文件到容器:

docker cp 你的文件路径 容器长ID:docker容器路径

拷贝容器文件到本地:

docker cp <containerId>:/file/path/within/container /host/path/target
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

swap空间的增减方法

(1)增大swap空间去激活swap交换区:swapoff v /dev/vg00/lvswap扩展交换lv:lvextend L 10G /dev/vg00/lvswap重新生成swap交换区:mkswap /dev/vg00/lvswap激活新生成的交换区:swapon v /dev/vg00/lvswap