docker構建FreeSWITCH編譯環境及打包

2023-06-18 06:00:53
作業系統 :CentOS 7.6_x64     
FreeSWITCH版本 :1.10.9
Docker版本:23.0.6
 
FreeSWITCH這種比較複雜的系統,使用容器部署是比較方便的,今天記錄下CentOS 7環境下使用docker構建FreeSWITCH編譯環境及打包釋出的過程。

一、資源準備

1、安裝docker環境

1)移除舊版本(可選)
yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
2)安裝依賴項
yum install -y yum-utils device-mapper-persistent-data lvm2
3)新增yum源
yum-config-manager --add-repo http://download.docker.com/linux/centos/docker-ce.repoyum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
4)檢視可用docker版本
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版本資訊:

docker version

 6)設定docker服務

啟動docker服務: systemctl start docker
設定docker服務開機啟動: systemctl enable docker
檢視docker服務狀態:systemctl status docker

2、下載FreeSWITCH原始碼

可從如下地址獲取:

 也可通過wget獲取:

wget https://files.freeswitch.org/releases/freeswitch/freeswitch-1.10.9.-release.tar.gz

3、下載FreeSWITCH依賴程式碼

主要依賴以下程式碼庫:
 
可通過wget或git獲取:
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基礎映象選型

這裡使用Debian 11 (bullseye)作為基礎映象:
docker image pull debian:bullseye

2、在docker內編譯FreeSWITCH

1)啟動debian容器
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源(可選)

這裡使用清華的源來加速安裝:https://mirrors.tuna.tsinghua.edu.cn/help/debian/

 

更新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
安裝libks:
tar zxvf libks-1.8.2.tar.gz 
cd libks-1.8.2
cmake .
make
make install
安裝sofia-sip:
tar zxvf sofia-sip-1.13.14.tar.gz
cd sofia-sip-1.13.14
   
./bootstrap.sh
./configure
make
make install
安裝spandsp:
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
安裝signalwire-c:
tar zxvf signalwire-c-1.3.0.tar.gz
cd signalwire-c-1.3.0
cmake .
make
make install
5)編譯FreeSWITCH
大致步驟:
./rebootstrap.sh && ./configure && make
6)安裝及執行FreeSWITCH(可選)
執行make install安裝FreeSWITCH

 執行FreeSWITCH:

/usr/local/freeswitch/bin/freeswitch -nonat

3、匯出容器快照作為基礎編譯映象

1)移除FreeSWITCH原始碼及依賴項
rm -rf /usr/src/freeswitch-1.10.9.-release*
rm -rf /usr/src/fs1.10.9-deps/
2)匯出debian容器快照
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)可從如下渠道獲取:

關注微信公眾號(聊聊博文,文末可掃碼)後回覆 20230617 獲取。 

4、測試基礎編譯映象

 1)匯入映象
docker load -i fs-base.tar

 2)啟動容器

docker run --name fs --network host -t -d fs:base /bin/bash

 3)編譯及執行FreeeSWITCH

僅複製FreeSWITCH原始碼過去即可編譯及安裝,演示視訊可從如下渠道獲取:
關注微信公眾號(聊聊博文,文末可掃碼)後回覆 2023061701 獲取。 

三、自動構建及打包

1、準備原始碼

原始碼檔案:freeswitch-1.10.9.-release.tar.gz

2、編寫DockerFile及entrypoint

完整程式碼可從如下渠道獲取:
關注微信公眾號(聊聊博文,文末可掃碼)後回覆 20230617 獲取。 

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

使用基礎編譯映象自動構建版本及執行容器的演示視訊,可從如下渠道獲取:

關注微信公眾號(聊聊博文,文末可掃碼)後回覆 2023061702 獲取。 

四、資源下載

本文涉及原始碼和檔案,可以從如下途徑獲取:
關注微信公眾號(聊聊博文,文末可掃碼)後回覆 20230617 獲取。