fs.1.10 ON CENTOS7 docker镜像制作
概述
freeswitch是一款简单好用的VOIP开源软交换平台。
centos7 docker上编译安装fs1.10版本的流程记录。
环境
docker engine:Version 24.0.6
centos docker:7
freeswitch:v1.10.7
手动模式
centos准备
docker hub拉取centos镜像。
sudo docker pull centos:7
启动docker容器,版本使用centos7。
sudo docker run -itd --name centos.7-fs.1.10-compile centos:7
sudo docker exec -it centos.7-fs.1.10-compile bash
以下步骤均为docker容器“centos.7-fs.1.10-compile”内部操作。
安装scl工具,必选安装
系统更新
yum update -y
官方scl源
yum install -y centos-release-scl centos-release-scl-rh
yum install -y scl-utils scl-utils-build yum-utils
yum repolist && yum clean all && yum makecache
从scl源中搜索软件,可选安装
yum search devtoolset-9-gcc
yum install -y devtoolset-9-gcc
scl enable devtoolset-9 'bash'
scl --list
通过bash环境来设定,仅对特定用户启用,可选
vi ~/.bashrc # or ~/.bash_profile
source scl_source enable devtoolset-9
安装libav,可选安装(不编译mod_av的情况下)
mod_av 依赖libav, libav需要 x264 lib才能支持h264
## download and install libx264
wget -c http://files.freeswitch.org/downloads/libs/libx264.tar.bz2
tar -jxvf libx264.tar.bz2
cd libx264
./configure --enable-static --enable-shared --prefix=/usr
make
make install
cp /usr/lib/pkgconfig/x264.pc /usr/lib64/pkgconfig/
cp /usr/lib/libx264.so /usr/lib64/
cp /usr/lib/libx264.a /usr/lib64/
## download and install libav
wget -c http://files.freeswitch.org/downloads/libs/libav-12.tar.bz2
tar -jxvf libav-12.tar.bz2
cd libav
./configure --enable-pic --enable-shared --enable-libx264 --enable-gpl --extra-libs="-ldl" --extra-cflags=-I/usr/include --extra-ldflags=-L/usr/lib64
make # make CXXFLAGS="-fPIC"
make install
cp /usr/local/lib/pkgconfig/libavcodec.pc /usr/local/lib/pkgconfig/libavdevice.pc /usr/local/lib/pkgconfig/libavfilter.pc /usr/local/lib/pkgconfig/libavformat.pc /usr/local/lib/pkgconfig/libavresample.pc /usr/local/lib/pkgconfig/libavutil.pc /usr/local/lib/pkgconfig/libswscale.pc /usr/lib64/pkgconfig/
## 执行刷新,以让FreeSWITCH运行时可以找到库
ldconfig
编译安装freeswitch,删除mod_av模块编译
yum源
echo "signalwire" > /etc/yum/vars/signalwireusername
echo "TOKEN" > /etc/yum/vars/signalwiretoken
yum install -y https://$(< /etc/yum/vars/signalwireusername):$(< /etc/yum/vars/signalwiretoken)@freeswitch.signalwire.com/repo/yum/centos-release/freeswitch-release-repo-0-1.noarch.rpm
yum install -y epel-release
yum clean all
yum makecache fast
依赖
yum install -y yum-utils
yum-builddep -y freeswitch --skip-broken
yum install -y yum-plugin-ovl rpmdevtools yum-utils git centos-release-scl centos-release-scl-rh
yum remove spandsp-devel spandsp
yum install -y sofia-sip-devel spandsp3-devel libks signalwire-client-c erlang python-devel postgresql-devel
编译
git clone -b v1.10.7 https://github.com/signalwire/freeswitch.git freeswitch-1.10.7
cd freeswitch-1.10.7
##vi configure.ac 删除mod_av行
rm -rf /root/freeswitch-1.10.7/src/mod/applications/mod_av
chmod 777 -R *
./bootstrap.sh -j
##./configure --enable-portable-binary --with-gnu-ld --with-python --with-erlang --with-openssl --enable-core-odbc-support --enable-zrtp
./configure
cd /root/freeswitch-1.10.7/src/mod/codecs/mod_g729/
make
cd -
make
安装
make -j install
make -j cd-sounds-install
make -j cd-moh-install
清理多余的文件。
yum clean all
package-cleanup --quiet --leaves | xargs yum remove -y
package-cleanup --quiet --dupes | xargs yum remove -y
rm -rf /var/cache/yum
rm -rf /root/freeswitch-1.10.7
rm -rf /usr/local/freeswitch/conf /usr/local/freeswitch/log /usr/local/freeswitch/recordings
镜像操作
制作镜像。
sudo docker commit -m="centos.7-fs.1.10-release" -a="zr" centos.7-fs.1.10-compile 10.55.55.136:5000/zr/centos.7-fs.1.10-release:v1.1
上传镜像到registry。
sudo docker images
sudo docker push 10.55.55.136:5000/zr/centos.7-fs.1.10-release:v1.1
下载镜像。
sudo docker pull 10.55.55.136:5000/zr/centos.7-fs.1.10-release:v1.1
启动容器release。
sudo docker run -itd --net=host -v /home/adminx/docker/centos.7-fs.1.6.19/fs-sbc/conf:/usr/local/freeswitch/conf -v /usr/local/freeswitch/log:/usr/local/freeswitch/log -v /usr/local/freeswitch/recordings:/usr/local/freeswitch/recordings --name centos.7-fs.1.10-sbc 10.55.55.136:5000/zr/centos.7-fs.1.10-release:v1.1 /usr/local/freeswitch/bin/freeswitch -nonat -nosql -nonatmap -nocal -nort
sudo docker logs centos.7-fs.1.10-sbc
sudo docker exec -it centos.7-fs.1.10-sbc /usr/local/freeswitch/bin/fs_cli -x status
sudo docker rm -f centos.7-fs.1.10-sbc
总结
fs.1.10版本比1.6版本的安装依赖要更多,最终产生的镜像大小也更大。
后续继续整理fs.1.10镜像的dockerfile模式。
空空如常
求真得真
fs.1.10 ON CENTOS7 docker镜像制作的更多相关文章
- MySQL、MongoDB、Redis数据库Docker镜像制作
MySQL.MongoDB.Redis数据库Docker镜像制作 在多台主机上进行数据库部署时,如果使用传统的MySQL的交互式的安装方式将会重复很多遍.如果做成镜像,那么我们只需要make once ...
- #openstack centos6 centos7 kvm镜像制作
#openstack centos6 centos7 kvm 镜像制作 openstack windows 2008镜像 制作 http://www.cnblogs.com/elvi/p/800129 ...
- docker研究-4 docker镜像制作
这次实验以centos镜像为基础镜像进行相关docker镜像制作. 1. 下载centos镜像 [root@localhost ~]# docker pull centosUsing default ...
- 《Docekr入门学习篇》——Docker镜像制作
Docker镜像制作 Docker镜像的构建分为两种,一种是手动构建,一种是dockerfile(自动构建) 手动构建 基于centos镜像进行构建制作Nginx镜像 [root@rbtnode1 ~ ...
- Docker 镜像制作教程:针对不同语言的精简策略
本系列文章将分为三个部分: 第一部分着重介绍多阶段构建(multi-stage builds),因为这是镜像精简之路至关重要的一环.在这部分内容中,我会解释静态链接和动态链接的区别,它们对镜像带来的影 ...
- doris 0.9.0版本docker镜像制作与使用
1. 安装docker 详情请参见本人博客 2. 编译doris 详情请参见doris官网文档 3. 在编译好的doris output文件夹下编写两个Dockerfile 3.1 Dockerfi ...
- Nginx+PHP7.3.9 Docker镜像制作
最近因项目需要制作了多个版本的php docker镜像,制作过程可谓是一波三折,因基于yum的方式安装php的方式在安装扩展插件时很不方便,不容易找到插件对应的yum源,所以PHP在docker镜像中 ...
- 实战【docker 镜像制作与使用】
一.制作docker 镜像 使用spring boot 构建一个简单的web 项目,返回 “Hello,World ”字符串,使用 Maven 打成 jar 包,使用的Linux 环境是 Centos ...
- docker镜像制作Dockerfile
使用 Dockerfile 定制镜像 从刚才的 docker commit 的学习中,我们可以了解到,镜像的定制实际上就是 定制每一层所添加的配置.文件.如果我们可以把每一层修改.安装.构建.操作 的 ...
- presto-gateway 试用以及docker 镜像制作
presto-gateway 是 lyft 团队开源 的prestodb 的工具.以下是一个简单的试用,以及碰到问题的解决 还有就是docker 镜像的制作 Dockerfile 很简单,本地构建然后 ...
随机推荐
- 从零开始手写 mybatis(四)- mybatis 事务管理机制详解
前景回顾 第一节 从零开始手写 mybatis(一)MVP 版本 中我们实现了一个最基本的可以运行的 mybatis. 第二节 从零开始手写 mybatis(二)mybatis interceptor ...
- join命令
join命令 join命令用于将两个文件中,指定栏位内容相同的行连接起来.其首先找出两个文件中指定栏位内容相同的行,并加以合并,再输出到标准输出设备. 语法 join [OPTION]... FILE ...
- 开年喜报!Walrus成功入选CNCF云原生全景图
近日,数澈软件 Seal (以下简称"Seal")旗下开源应用管理平台 Walrus 成功入选云原生计算基金会全景图(CNCF Landscape)并收录至 "App D ...
- VuePress + Github Pages 搭建文档博客
说明 最近想把常用的一些干货知识点都集中起来,方便发布和查找.相当于创建一个自己的知识库,我就叫它Java技术文档.虽然博客写文档也挺方便,但是在于文档的集中阅读和管理方面还是不够简洁和快速.此处就以 ...
- SpringBoot+Shiro+LayUI权限管理系统项目-7.实现用户管理
1.说明 只讲解关键部分,详细看源码,文章下方捐赠或QQ联系捐赠获取. 2.功能展示 包括用户增删改查和分配角色. 3.业务模型 @Data @EqualsAndHashCode(callSuper ...
- 如何在C#中使用 Excel 动态函数生成依赖列表
前言 在Excel 中,依赖列表或级联下拉列表表示两个或多个列表,其中一个列表的项根据另一个列表而变化.依赖列表通常用于Excel的业务报告,例如学术记分卡中的[班级-学生]列表.区域销售报告中的[区 ...
- win32-localtime的使用
下面的例子用于反映本地系统的日期格式变化 // locale test #include <stdio.h> #include <locale.h> #include < ...
- 谈谈Tomcat占用cpu高的问题
目录 问题现场 线程死锁 vs 线程死循环 排查Java进程导致CPU持续高的方法 Tomcat的CPU占用高的原因总结 问题现场 测试环境tomcat进程占用CPU一直持续99%,但是通过jstac ...
- 统信UOS系统开发笔记(四):从Qt源码编译安装之编译安装QtCreator4.11.2,并配置编译测试Demo
前言 上一篇已经从Qt源码编译了Qt,那么Qt开发的IDE为QtCreator,本篇从源码编译安装QtCreator,并配置好构建套件,运行Demo并测试. 统信UOS系统版本 系统版本: ...
- 【Java复健指南03】递归思想
[递归] 递归重要规则 1.执行一个方法时,就创建一个新的受保护的独立空间(栈空间) 方法的局部变量是独立的,不会相互影响,比如n变量 如果方法中使用的是引用类型变量(比如数组,对象),就会共享该引用 ...