add media构建
This commit is contained in:
parent
548ed256da
commit
b3438f9dcf
|
|
@ -54,7 +54,7 @@ services:
|
||||||
]
|
]
|
||||||
|
|
||||||
polaris-media:
|
polaris-media:
|
||||||
image: ${REGISTRY}zlmediakit/zlmediakit:latest # 替换为官方镜像
|
image: ${REGISTRY}polaris-media:latest # 替换为官方镜像
|
||||||
restart: always
|
restart: always
|
||||||
networks:
|
networks:
|
||||||
- media-net
|
- media-net
|
||||||
|
|
|
||||||
|
|
@ -33,8 +33,8 @@ RUN apt-get update && \
|
||||||
|
|
||||||
RUN mkdir -p /opt/media
|
RUN mkdir -p /opt/media
|
||||||
WORKDIR /opt/media
|
WORKDIR /opt/media
|
||||||
RUN git clone --depth 1 https://gitee.com/xia-chu/ZLMediaKit && \
|
# 使用本地复制的 ZLM 代码(由 build.sh 复制到当前目录)
|
||||||
cd ZLMediaKit && git submodule update --init
|
COPY ZLM /opt/media/ZLMediaKit
|
||||||
|
|
||||||
# 3rdpart init
|
# 3rdpart init
|
||||||
WORKDIR /opt/media/ZLMediaKit/3rdpart
|
WORKDIR /opt/media/ZLMediaKit/3rdpart
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,89 @@
|
||||||
|
FROM registry.t-aaron.com/ubuntu:20.04 AS build
|
||||||
|
|
||||||
|
#shell,rtmp,rtsp,rtsps,http,rtp
|
||||||
|
EXPOSE 10935/tcp
|
||||||
|
EXPOSE 5540/tcp
|
||||||
|
EXPOSE 6080/tcp
|
||||||
|
EXPOSE 10000/udp
|
||||||
|
EXPOSE 10000/tcp
|
||||||
|
EXPOSE 8000/udp
|
||||||
|
EXPOSE 8000/tcp
|
||||||
|
EXPOSE 9000/udp
|
||||||
|
|
||||||
|
RUN apt-get update && \
|
||||||
|
DEBIAN_FRONTEND="noninteractive" \
|
||||||
|
apt-get install -y --no-install-recommends \
|
||||||
|
build-essential \
|
||||||
|
cmake \
|
||||||
|
git \
|
||||||
|
curl \
|
||||||
|
vim \
|
||||||
|
wget \
|
||||||
|
ca-certificates \
|
||||||
|
tzdata \
|
||||||
|
libssl-dev \
|
||||||
|
gcc \
|
||||||
|
g++ \
|
||||||
|
gdb && \
|
||||||
|
apt-get autoremove -y && \
|
||||||
|
apt-get clean -y && \
|
||||||
|
rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
RUN mkdir -p /opt/media
|
||||||
|
WORKDIR /opt/media
|
||||||
|
# 使用本地 ZLM 代码
|
||||||
|
COPY ZLM /opt/media/ZLMediaKit
|
||||||
|
|
||||||
|
# 3rdpart init
|
||||||
|
WORKDIR /opt/media/ZLMediaKit/3rdpart
|
||||||
|
RUN wget https://polaris-tian-generic.pkg.coding.net/qt/dependencies/openssl-1.1.1k.tar.gz?version=latest -O openssl-1.1.1k.tar.gz && \
|
||||||
|
tar -xvzf openssl-1.1.1k.tar.gz && \
|
||||||
|
cd openssl-1.1.1k && ./config shared --openssldir=/usr/local/openssl --prefix=/usr/local/openssl && \
|
||||||
|
make && make install && \
|
||||||
|
echo "/usr/local/lib64/" >> /etc/ld.so.conf && \
|
||||||
|
echo "/usr/local/openssl/lib" >> /etc/ld.so.conf && \
|
||||||
|
ldconfig && \
|
||||||
|
ln -s /usr/local/openssl/bin/openssl /usr/local/bin/openssl
|
||||||
|
|
||||||
|
WORKDIR /opt/media/ZLMediaKit/3rdpart
|
||||||
|
RUN wget https://github.com/cisco/libsrtp/archive/v2.3.0.tar.gz -O libsrtp-2.3.0.tar.gz && \
|
||||||
|
tar xfv libsrtp-2.3.0.tar.gz && \
|
||||||
|
mv libsrtp-2.3.0 libsrtp && \
|
||||||
|
cd libsrtp && ./configure --enable-openssl --with-openssl-dir=/usr/local/openssl && make -j $(nproc) && make install
|
||||||
|
|
||||||
|
|
||||||
|
WORKDIR /opt/media/ZLMediaKit/build
|
||||||
|
RUN cmake .. -DENABLE_WEBRTC=true -DOPENSSL_ROOT_DIR=/usr/local/openssl -DOPENSSL_LIBRARIES=/usr/local/openssl/lib && \
|
||||||
|
cmake --build . --target MediaServer
|
||||||
|
COPY docker/media/config.ini /opt/media/ZLMediaKit/release/linux/Debug/
|
||||||
|
|
||||||
|
FROM registry.t-aaron.com/ubuntu:20.04
|
||||||
|
|
||||||
|
RUN apt-get update && \
|
||||||
|
DEBIAN_FRONTEND="noninteractive" \
|
||||||
|
apt-get install -y --no-install-recommends \
|
||||||
|
vim \
|
||||||
|
wget \
|
||||||
|
ca-certificates \
|
||||||
|
tzdata \
|
||||||
|
curl \
|
||||||
|
libssl-dev \
|
||||||
|
ffmpeg \
|
||||||
|
gcc \
|
||||||
|
g++ \
|
||||||
|
gdb && \
|
||||||
|
apt-get autoremove -y && \
|
||||||
|
apt-get clean -y && \
|
||||||
|
rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
ENV TZ=Asia/Shanghai
|
||||||
|
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime \
|
||||||
|
&& echo $TZ > /etc/timezone && \
|
||||||
|
mkdir -p /opt/media/bin/www
|
||||||
|
|
||||||
|
WORKDIR /opt/media/bin/
|
||||||
|
COPY --from=build /opt/media/ZLMediaKit/release/linux/Debug/MediaServer /opt/media/ZLMediaKit/default.pem /opt/media/bin/
|
||||||
|
COPY --from=build /opt/media/ZLMediaKit/release/linux/Debug/config.ini /opt/media/conf/
|
||||||
|
COPY --from=build /opt/media/ZLMediaKit/www/ /opt/media/bin/www/
|
||||||
|
ENV PATH /opt/media/bin:$PATH
|
||||||
|
CMD ["./MediaServer","-s", "default.pem", "-c", "../conf/config.ini", "-l","0"]
|
||||||
|
|
@ -0,0 +1,75 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# 构建并推送 media 镜像到私有仓库
|
||||||
|
# 使用方法: 在 docker/media 目录下执行 ./build-and-push-media.sh
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# 获取脚本所在目录
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
# 项目根目录(脚本所在目录的上两级)
|
||||||
|
PROJECT_ROOT="$(cd "${SCRIPT_DIR}/../.." && pwd)"
|
||||||
|
|
||||||
|
# 配置变量
|
||||||
|
REGISTRY="registry.t-aaron.com"
|
||||||
|
IMAGE_NAME="polaris-media"
|
||||||
|
VERSION="latest"
|
||||||
|
PLATFORM="linux/amd64"
|
||||||
|
DOCKERFILE="Dockerfile.registry"
|
||||||
|
|
||||||
|
# 完整镜像名称
|
||||||
|
FULL_IMAGE_NAME="${REGISTRY}/${IMAGE_NAME}:${VERSION}"
|
||||||
|
|
||||||
|
echo "=========================================="
|
||||||
|
echo "开始构建 ZLMediaKit 镜像"
|
||||||
|
echo "=========================================="
|
||||||
|
echo "脚本目录: ${SCRIPT_DIR}"
|
||||||
|
echo "项目根目录: ${PROJECT_ROOT}"
|
||||||
|
echo "镜像名称: ${FULL_IMAGE_NAME}"
|
||||||
|
echo "平台架构: ${PLATFORM}"
|
||||||
|
echo "Dockerfile: ${SCRIPT_DIR}/${DOCKERFILE}"
|
||||||
|
echo "=========================================="
|
||||||
|
|
||||||
|
# 检查 Dockerfile 是否存在
|
||||||
|
if [ ! -f "${SCRIPT_DIR}/${DOCKERFILE}" ]; then
|
||||||
|
echo "错误: 未找到 Dockerfile: ${SCRIPT_DIR}/${DOCKERFILE}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 检查 ZLM 目录是否存在
|
||||||
|
if [ ! -d "${PROJECT_ROOT}/ZLM" ]; then
|
||||||
|
echo "错误: ZLM 目录不存在: ${PROJECT_ROOT}/ZLM"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 检查 ZLM 源码是否完整
|
||||||
|
if [ ! -d "${PROJECT_ROOT}/ZLM/3rdpart/ZLToolKit/src" ]; then
|
||||||
|
echo "错误: ZLM 源码不完整,请确保 3rdpart 目录下的依赖库存在"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 检查 buildx 是否可用
|
||||||
|
if ! docker buildx version &> /dev/null; then
|
||||||
|
echo "错误: docker buildx 不可用"
|
||||||
|
echo "请先安装 docker buildx"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 切换到项目根目录作为构建上下文
|
||||||
|
cd "${PROJECT_ROOT}"
|
||||||
|
|
||||||
|
# 构建并推送镜像
|
||||||
|
echo ""
|
||||||
|
echo "开始构建镜像..."
|
||||||
|
docker buildx build \
|
||||||
|
--platform ${PLATFORM} \
|
||||||
|
-t ${FULL_IMAGE_NAME} \
|
||||||
|
-f docker/media/${DOCKERFILE} \
|
||||||
|
--push \
|
||||||
|
.
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "=========================================="
|
||||||
|
echo "构建完成!"
|
||||||
|
echo "镜像已推送到: ${FULL_IMAGE_NAME}"
|
||||||
|
echo "=========================================="
|
||||||
|
|
@ -1,8 +1,47 @@
|
||||||
#/bin/bash
|
#!/bin/bash
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
version=2.7.3
|
version=latest
|
||||||
|
|
||||||
|
# 获取脚本所在目录
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
PROJECT_ROOT="$(cd "${SCRIPT_DIR}/../.." && pwd)"
|
||||||
|
|
||||||
|
echo "=========================================="
|
||||||
|
echo "开始构建 ZLMediaKit Docker 镜像"
|
||||||
|
echo "=========================================="
|
||||||
|
|
||||||
|
# 检查 ZLM 目录是否存在
|
||||||
|
if [ ! -d "${PROJECT_ROOT}/ZLM" ]; then
|
||||||
|
echo "错误: ZLM 目录不存在: ${PROJECT_ROOT}/ZLM"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 检查 ZLM 源码是否完整
|
||||||
|
if [ ! -d "${PROJECT_ROOT}/ZLM/3rdpart/ZLToolKit/src" ]; then
|
||||||
|
echo "错误: ZLM 源码不完整,请确保 3rdpart 目录下的依赖库存在"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 清理旧的 ZLM 目录(如果存在)
|
||||||
|
if [ -d "${SCRIPT_DIR}/ZLM" ]; then
|
||||||
|
echo "清理旧的 ZLM 目录..."
|
||||||
|
rm -rf "${SCRIPT_DIR}/ZLM"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 复制 ZLM 目录到 media 目录
|
||||||
|
echo "复制 ZLM 源码到构建目录..."
|
||||||
|
cp -r "${PROJECT_ROOT}/ZLM" "${SCRIPT_DIR}/ZLM"
|
||||||
|
|
||||||
|
echo "开始构建 Docker 镜像..."
|
||||||
|
|
||||||
docker build -t polaris-media:${version} .
|
docker build -t polaris-media:${version} .
|
||||||
docker tag polaris-media:${version} polaris-tian-docker.pkg.coding.net/qt/polaris/polaris-media:${version}
|
|
||||||
docker tag polaris-media:${version} polaris-tian-docker.pkg.coding.net/qt/polaris/polaris-media:latest
|
# 构建完成后清理
|
||||||
|
echo "清理构建目录..."
|
||||||
|
rm -rf "${SCRIPT_DIR}/ZLM"
|
||||||
|
|
||||||
|
echo "=========================================="
|
||||||
|
echo "构建完成!"
|
||||||
|
echo "镜像: polaris-media:${version}"
|
||||||
|
echo "=========================================="
|
||||||
|
|
@ -46,6 +46,23 @@ docker login registry.t-aaron.com
|
||||||
步骤3:推送第三方镜像到私有仓库
|
步骤3:推送第三方镜像到私有仓库
|
||||||
|
|
||||||
|
|
||||||
|
# ===== ubuntu:20.04 =====
|
||||||
|
# 备份本地 arm64 镜像
|
||||||
|
docker tag ubuntu:20.04 ubuntu:20.04-backup
|
||||||
|
|
||||||
|
# 拉取 amd64 版本
|
||||||
|
docker pull --platform linux/amd64 ubuntu:20.04
|
||||||
|
|
||||||
|
# 推送到私有仓库
|
||||||
|
docker tag ubuntu:20.04 registry.t-aaron.com/ubuntu:20.04
|
||||||
|
docker push registry.t-aaron.com/ubuntu:20.04
|
||||||
|
|
||||||
|
# 恢复本地 arm64 版本
|
||||||
|
docker rmi ubuntu:20.04
|
||||||
|
docker tag ubuntu:20.04-backup ubuntu:20.04
|
||||||
|
docker rmi ubuntu:20.04-backup
|
||||||
|
|
||||||
|
|
||||||
# ===== ubuntu:24.04 =====
|
# ===== ubuntu:24.04 =====
|
||||||
# 备份本地 arm64 镜像
|
# 备份本地 arm64 镜像
|
||||||
docker tag ubuntu:24.04 ubuntu:24.04-backup
|
docker tag ubuntu:24.04 ubuntu:24.04-backup
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue