docker构建FreeSWITCH编译环境及打包
一、资源准备
1、安装docker环境
yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://download.docker.com/linux/centos/docker-ce.repo
或
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum list docker-ce --showduplicates | sort -r

5)安装docker服务
yum install docker-ce-cli-23.0.6 docker-ce-23.0.6 containerd.io

查看docker版本信息:

6)配置docker服务

也可通过wget获取:
wget https://files.freeswitch.org/releases/freeswitch/freeswitch-1.10.9.-release.tar.gz
3、下载FreeSWITCH依赖代码
wget https://github.com/signalwire/libks/archive/refs/tags/v1.8.2.tar.gz
wget https://github.com/freeswitch/sofia-sip/archive/refs/tags/v1.13.14.tar.gz
git clone https://github.com/freeswitch/spandsp.git
wget https://github.com/signalwire/signalwire-c/archive/refs/tags/1.3.0.tar.gz
二、制作base包
1、docker基础镜像选型
docker image pull debian:bullseye

2、在docker内编译FreeSWITCH
docker run --name debian --network host -t -d debian:bullseye

2)复制源码到debian容器
docker cp freeswitch-1.10.9.-release.tar.gz debian:/usr/src/
docker cp fs1.10.9-deps debian:/usr/src/

3)更新apt源(可选)

>/etc/apt/sources.list
echo "deb http://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free" >> /etc/apt/sources.list
echo "deb http://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free" >> /etc/apt/sources.list
echo "deb http://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free" >> /etc/apt/sources.list
echo "deb http://mirrors.tuna.tsinghua.edu.cn/debian-security bullseye-security main contrib non-free" >> /etc/apt/sources.list cat /etc/apt/sources.list apt update

4)安装编译依赖项
apt install gcc g++ autoconf automake make cmake yasm uuid-dev libvpx-dev unixodbc-dev ncurses-dev zlib1g-dev libjpeg-dev libtiff-dev liblua5.1-0-dev libsqlite3-dev libsndfile-dev libavformat-dev libswscale-dev libcurl4-openssl-dev libpcre3-dev libspeex-dev libspeexdsp-dev libedit-dev libtool libldns-dev libopus-dev libpq-dev
tar zxvf libks-1.8.2.tar.gz
cd libks-1.8.2
cmake .
make
make install
tar zxvf sofia-sip-1.13.14.tar.gz
cd sofia-sip-1.13.14 ./bootstrap.sh
./configure
make
make install
cd spandsp/
./bootstrap.sh
./configure
make
make install
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:${PKG_CONFIG_PATH}
echo "export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:${PKG_CONFIG_PATH}" >> /etc/profile ldconfig
tar zxvf signalwire-c-1.3.0.tar.gz
cd signalwire-c-1.3.0
cmake .
make
make install
./rebootstrap.sh && ./configure && make

运行FreeSWITCH:

3、导出容器快照作为基础编译镜像
rm -rf /usr/src/freeswitch-1.10.9.-release*
rm -rf /usr/src/fs1.10.9-deps/
docker export -o debian_fs_builder.tar 164f8b171a95

3)给导出的容器快照添加标签
docker import debian_fs_builder.tar
docker image tag 91f9e45241ed fs:base

4)导出基础编译镜像
docker image save fs:base -o fs-base.tar
tar zcvf fs-base.tar.gz fs-base.tar

预编译的基础镜像(fs-base.tar.gz)可从如下渠道获取:
4、测试基础编译镜像
docker load -i fs-base.tar

2)启动容器
docker run --name fs --network host -t -d fs:base /bin/bash

3)编译及运行FreeeSWITCH
三、自动构建及打包
1、准备源码
2、编写DockerFile及entrypoint

3、构建docker镜像
#! /bin/bash tar zxvf freeswitch-1.10.9.-release.tar.gz
docker build -t fs:1.0.0 .
docker image save fs:1.0.0 -o fs_v1.0.0.tar
tar zcvf fs_v1.0.0.tar.gz fs_v1.0.0.tar
rm -rf fs_v1.0.0.tar
4、发布fs镜像及启动
tar zxvf fs_v1.0.0.tar.gz
docker load -i fs_v1.0.0.tar
./run.sh

使用基础编译镜像自动构建版本及运行容器的演示视频,可从如下渠道获取:
四、资源下载

docker构建FreeSWITCH编译环境及打包的更多相关文章
- Docker构建Python Web环境
出于寻找Docker对Python相关项目部署的学习,找到腾讯课堂NEXT公开课中[Docker构建Python Web环境]的课程,本文对其进行内容梳理及知识点汇总. 该课程总计6小时左右,是个适合 ...
- selenium结合docker构建分布式测试环境
selenium是目前web和app自动化测试的主要框架.对于web自动化测试而言,由于selenium2.0以后socker服务器由本地浏览器自己启动且直接通过浏览器原生API操作页面,故越来越多的 ...
- selenium 结合 docker 构建分布式测试环境 (初学者视角)
前言:随着自动化测试越学越深,深深觉得有太多的东西需要总结. 1.记录下学习中遇到的坑,当做学习笔记.2.有前人路过看到文章中比较落后的做法,请务必一定要指教.(因为是初学者视角,很多东西只是走通而已 ...
- 【转】Ant学习笔记——自己构建Ant编译环境
自从年初开始用NetBeans6.0,才接触到Ant. 这是今年6月份的一篇Ant学习笔记.安装 1.下载并构建环境. 去官网下载src包和bin包.解压缩它们到同一目录,运行build.bat, ...
- 使用docker创建aosp编译环境
如果只需要编译一个版本的aosp,那么如果在主机上架建环境即可,可写的程序如果要在各个aosp版本中编译,那在主机上架建多个aosp编译环境可以会比较麻烦,github上找到一个openstf用doc ...
- Win7系统下,docker构建nginx+php7环境实践
前面两章介绍的是Windows系统下如何安装和配置docker,主要原因在于,公司大多人数用的是Windows环境,想通过在Windows环境上,通过docker,构建一个公用的配置. 首先要说明的是 ...
- 用 Docker 构建 MySQL 主从环境
开源Linux 一个执着于技术的公众号 前言 本篇文章记录使用 docker-compose 以及 dockerfile 来构建基于 binlog 的 MySQL 主从环境.如果你严格按照文中的步骤进 ...
- sublime构建各个编译环境
一 java运行环境配置: 打开sublime选择Tool 到 Building System 选择new building System 输入 {"shell_cmd": &qu ...
- 使用kafka和zookeeper 构建分布式编译环境
1:在每台机器上安装jdk, 脚本代码如下: 每一个机器上下载jdk,zookeeper,kafka 链接:https://www.oracle.com/technetwork/java/javase ...
- 基于openvswitch+Docker构建SDN网络测试环境 (使用ovs-docker进行构建)
这是一篇之前写的笔记,主要记录了使用openvswitch + Docker 等进行一个小型的SDN网络搭建的操作步骤.由于 之前临时有其他任务,耽搁了一下,最近开始重新整理,并计划开发一个简单的Py ...
随机推荐
- 基于el-input实现数字区间输入框(已发布npm/github)
项目地址:https://github.com/heyu3913/InputNumberRange (求star) input-number-range tips:更多定制化需求请联系: 13102 ...
- fastjson很好,但不适合我
记者:大爷您有什么特长呀? fastjson:我很快. 记者:23423乘以4534等于多少? fastjson:等于2343. 记者:?? fastjson:你就说快不快吧! 这个略显马丽苏的标题, ...
- ACM-DP-数塔问题
Description 在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这样描述的: 有如下所示的数塔,要求从顶层走到底层,若每一步只能走到相邻的结点,则经过的结点的数字之和最大是多少? 已经告 ...
- CTF-Web-PHP反序列化
概念解释 PHP 反序列化漏洞又叫做 PHP 对象注入漏洞,我觉得这个表达很不直白,也不能说明根本的问题,不如我们叫他 PHP 对象的属性篡改漏洞好了(别说这是我说的~~) 反序列化漏洞的成因在于代码 ...
- 全网最详细中英文ChatGPT-GPT-4示例文档-复杂函数快速转单行函数从0到1快速入门——官网推荐的48种最佳应用场景(附python/node.js/curl命令源代码,小白也能学)
目录 Introduce 简介 setting 设置 Prompt 提示 Sample response 回复样本 API request 接口请求 python接口请求示例 node.js接口请求示 ...
- [软件设计&系统建模] Web软件通用能力模块
0 基础工具 1 日志 2 权限 3 文件处理(下载/上传) 4 对象池 对象池 数据库连接池 线程池 5 微服务 服务网关 配置中心 注册中心 服务调用 服务熔断 健康检测 Actuator 6 缓 ...
- 五月十二号java基础知识点
1.注解是代码中特殊标记,作用是告知编译器做什么事2.反射允许程序在运行状态时,对任意一个字节码获取它所有信息3.内部类是定义在类中的嵌套类4.匿名内部类是定义在类的同时创建该类的一个对象5.lamb ...
- Linux环境变量及其配置
为什么要说这个呢? 本人喜欢使用Linux开发(工作是个硬要求,有些时候不能使用Linux,比如我上一个工作.但是有些时候呢,工作环境比较开放,我可以选择我喜欢的系统进行工作:比如我现在的工作.红红火 ...
- vue中通过$emit实现子向父通信
本篇讨论vue中使用$emit实现子向父通信, 第一步:我们在父组件中注册子组件,然后再给子组件标签添加一个自定义事件监听,这样在子组件实例上就绑定了一个自定义的事件add. 后面如果触发add事件, ...
- 吃透SpringMVC面试八股文
说说你对 SpringMVC 的理解 SpringMVC是一种基于 Java 的实现MVC设计模型的请求驱动类型的轻量级Web框架,属于Spring框架的一个模块. 它通过一套注解,让一个简单的Jav ...
