docker構建FreeSWITCH編譯環境及打包

操作系統 :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 獲取。 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章