详细实现方式以及代码下载请前往 https://www.passerma.com/article/90
实现效果
一、手动构建镜像
1.新建Dockerfile文件
文件用于编译镜像
以alpine为基础镜像
添加coturn需要的依赖库
获取coturn并进行编译
通过start.sh启动turnserver服务
Dockerfile
FROM alpine
RUN apk add make \
gcc\
g++ \
wget \
libevent-dev \
openssl-dev \
libffi-dev \
curl
RUN wget https://github.com/coturn/coturn/archive/4.5.1.3.tar.gz \
&& tar -zxvf 4.5.1.3.tar.gz \
&& cd coturn-4.5.1.3 \
&& ./configure && make && make install && cd .. \
&& rm -rf coturn-4.5.1.3 4.5.1.3.tar.gz
COPY ./start.sh /start.sh
EXPOSE 3478 3478/udp
ENTRYPOINT ["/start.sh"]
2.新建start.sh文件
需要先给予start.sh文件可执行权限
chmod +x start.sh
start.sh
#!/bin/sh
createConf() {
if [ -z "$EXTERNAL_IP" ]; then
ip_tmp=$(curl http://icanhazip.com)
if [ $? -eq 0 ]; then
echo "获取 EXTERNAL_IP 成功: $ip_tmp"
EXTERNAL_IP="$ip_tmp"
else
echo "获取 EXTERNAL_IP 失败,请手动修改"
EXTERNAL_IP="0.0.0.0"
fi
else
echo "EXTERNAL_IP 已经设置为: $EXTERNAL_IP"
fi
cat <<EOF >>/etc/turnserver.conf
listening-device=eth0
listening-port=3478
listening-ip=0.0.0.0
external-ip=$EXTERNAL_IP
fingerprint
lt-cred-mech
user=$user_tmp
realm=localhost
no-tlsv1
no-tlsv1_1
no-tlsv1_2
EOF
}
echo "====== 配置 turnserver ======"
user_tmp=${TURN_USERNAME:-"user"}:${TURN_PASSWORD:-"pass"}
if [ ! -f /etc/turnserver.conf ]; then
echo "创建 /etc/turnserver.conf 配置文件"
createConf
echo "====== 启动 turnserver ======"
echo "external-ip=$EXTERNAL_IP"
echo "user=$user_tmp"
else
echo "/etc/turnserver.conf 配置文件已存在"
echo "====== 启动 turnserver ======"
fi
exec turnserver -v -c /etc/turnserver.conf
3.编译镜像
docker build -t passerma/turnserver:1.0.0 .
二、使用现有镜像
docker pull passerma/turnserver:1.0.0
三、镜像使用
1.直接运行
docker run -itd --name turnserver -p 3478:3478 -p 3478:3478/udp passerma/turnserver:1.0.0
2.带参数运行
支持修改公网 ip、用户名、密码
docker run -itd --name turnserver \
-e EXTERNAL_IP=1.2.3.4 -e TURN_USERNAME=myuser -e TURN_PASSWORD=mypass \
-p 3478:3478 -p 3478:3478/udp \
passerma/turnserver:1.0.0
3.配置修改
配置文件位置 /etc/turnserver.conf
配置文件默认如下
listening-device=eth0
listening-port=3478
listening-ip=0.0.0.0
external-ip=0.0.0.0
fingerprint
lt-cred-mech
user=user:pass
realm=localhost
no-tlsv1
no-tlsv1_1
no-tlsv1_2
默认用户名密码为user:pass
四、项目源码
详细实现方式以及代码下载请前往 https://www.passerma.com/article/90