76 lines
2.0 KiB
Bash
Executable File
76 lines
2.0 KiB
Bash
Executable File
#!/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 "=========================================="
|