add media构建
This commit is contained in:
parent
548ed256da
commit
b3438f9dcf
|
|
@ -54,7 +54,7 @@ services:
|
|||
]
|
||||
|
||||
polaris-media:
|
||||
image: ${REGISTRY}zlmediakit/zlmediakit:latest # 替换为官方镜像
|
||||
image: ${REGISTRY}polaris-media:latest # 替换为官方镜像
|
||||
restart: always
|
||||
networks:
|
||||
- media-net
|
||||
|
|
|
|||
|
|
@ -33,8 +33,8 @@ RUN apt-get update && \
|
|||
|
||||
RUN mkdir -p /opt/media
|
||||
WORKDIR /opt/media
|
||||
RUN git clone --depth 1 https://gitee.com/xia-chu/ZLMediaKit && \
|
||||
cd ZLMediaKit && git submodule update --init
|
||||
# 使用本地复制的 ZLM 代码(由 build.sh 复制到当前目录)
|
||||
COPY ZLM /opt/media/ZLMediaKit
|
||||
|
||||
# 3rdpart init
|
||||
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
|
||||
|
||||
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 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:推送第三方镜像到私有仓库
|
||||
|
||||
|
||||
# ===== 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 =====
|
||||
# 备份本地 arm64 镜像
|
||||
docker tag ubuntu:24.04 ubuntu:24.04-backup
|
||||
|
|
|
|||
Loading…
Reference in New Issue