From 1e4db4588c85c630c184b02a76e24ddba6ede89b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=99=E5=B0=8F=E4=BA=91?= Date: Sat, 6 Dec 2025 16:43:16 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0linux=E7=9A=84=E6=94=AF?= =?UTF-8?q?=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker/.env | 5 +- docker/wvp/Dockerfile.registry | 82 ++++++++++++++++++++++++++++++++ docker/wvp/build-and-push-wvp.sh | 64 +++++++++++++++++++++++++ reademe/use.md | 51 ++++++++++++++++++++ 4 files changed, 201 insertions(+), 1 deletion(-) create mode 100644 docker/wvp/Dockerfile.registry create mode 100755 docker/wvp/build-and-push-wvp.sh diff --git a/docker/.env b/docker/.env index 9b1b4fc..8038757 100644 --- a/docker/.env +++ b/docker/.env @@ -16,4 +16,7 @@ SIP_Password=wvp_sip_password RecordSip=true -RecordPushLive=false \ No newline at end of file +RecordPushLive=false + +#服务器上放开这个注释 +#REGISTRY=registry.t-aaron.com/ \ No newline at end of file diff --git a/docker/wvp/Dockerfile.registry b/docker/wvp/Dockerfile.registry new file mode 100644 index 0000000..ac09168 --- /dev/null +++ b/docker/wvp/Dockerfile.registry @@ -0,0 +1,82 @@ +FROM registry.t-aaron.com/eclipse-temurin:17-jdk AS builder +EXPOSE 18978/tcp +EXPOSE 8116/tcp +EXPOSE 8116/udp +EXPOSE 8080/tcp + +#RUN apt-get update && \ + #DEBIAN_FRONTEND="noninteractive" \ + #apt-get install -y --no-install-recommends \ + #wget \ + #cmake \ + #maven \ + #git \ + #ca-certificates \ + #tzdata \ + #curl \ + #libpcre3 \ + #libpcre3-dev \ + #zlib1g-dev \ + #openssl \ + #libssl-dev \ + #gdb && \ + #apt-get autoremove -y && \ + #apt-get clean -y && \ + #rm -rf /var/lib/apt/lists/* + +## install jdk1.8 +#RUN mkdir -p /opt/download +#WORKDIR /opt/download +#RUN if [ "$Platfrom" = "arm64" ]; \ + #then \ + #wget https://polaris-tian-generic.pkg.coding.net/qt/autopliot/jdk-8u411-linux-aarch64.tar.gz?version=latest --no-check-certificate -O jdk-8.tar.gz && \ + #tar -zxvf /opt/download/jdk-8.tar.gz -C /usr/local/ --transform 's/jdk1.8.0_411/java/' && \ + #rm /opt/download/jdk-8.tar.gz; \ + #else \ + #wget https://polaris-tian-generic.pkg.coding.net/qt/autopliot/jdk-8u202-linux-x64.tar.gz?version=latest --no-check-certificate -O jdk-8.tar.gz && \ + #tar -zxvf /opt/download/jdk-8.tar.gz -C /usr/local/ --transform 's/jdk1.8.0_202/java/' && \ + #rm /opt/download/jdk-8.tar.gz; \ + #fi + +#ENV JAVA_HOME /usr/local/java/ +#ENV JRE_HOME ${JAVA_HOME}/jre +#ENV CLASSPATH .:${JAVA_HOME}/lib:${JRE_HOME}/lib +#ENV PATH ${JAVA_HOME}/bin:$PATH + +RUN java -version && javac -version + +#RUN sed -i 's/deb.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list.d/debian.sources && \ +RUN apt-get update && \ + apt-get install -y maven && \ + rm -rf /var/lib/apt/lists/* + + +COPY docker/wvp/wvpcode /build +WORKDIR /build +RUN ls && mvn clean package -Dmaven.test.skip=true +WORKDIR /build/target +RUN mv wvp-pro-*.jar wvp.jar + + +FROM registry.t-aaron.com/eclipse-temurin:17-jre +RUN mkdir -p /opt/wvp +WORKDIR /opt/wvp +COPY --from=builder /build/target /opt/wvp +ENTRYPOINT ["java", "-Xms512m", "-Xmx1024m", "-XX:+HeapDumpOnOutOfMemoryError", "-XX:HeapDumpPath=/opt/wvp/", "-jar", "wvp.jar"] + + + +#RUN mkdir -p /opt/wvp +#WORKDIR /opt/wvp +#COPY ./wvp /opt/wvp +# +#WORKDIR /home +#RUN cd /home && \ + #git clone https://gitee.com/pan648540858/wvp-GB28181-pro.git +# +#RUN cd /home/wvp-GB28181-pro && \ + #mvn clean package -Dmaven.test.skip=true && \ + #cp /home/wvp-GB28181-pro/target/*.jar /opt/wvp/wvp.jar +# +#WORKDIR /opt/wvp +#ENTRYPOINT ["java", "-Xms512m", "-Xmx1024m", "-XX:+HeapDumpOnOutOfMemoryError", "-XX:HeapDumpPath=/opt/ylcx/", "-jar", "wvp.jar", "--spring.config.location=/opt/ylcx/wvp/application.yml"] diff --git a/docker/wvp/build-and-push-wvp.sh b/docker/wvp/build-and-push-wvp.sh new file mode 100755 index 0000000..a11f076 --- /dev/null +++ b/docker/wvp/build-and-push-wvp.sh @@ -0,0 +1,64 @@ +#!/bin/bash + +# 构建并推送 wvp 镜像到私有仓库 +# 使用方法: 在 docker/wvp 目录下执行 ./build-and-push-wvp.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-wvp" +VERSION="2.7.7" +PLATFORM="linux/amd64" +DOCKERFILE="Dockerfile.registry" + +# 完整镜像名称 +FULL_IMAGE_NAME="${REGISTRY}/${IMAGE_NAME}:${VERSION}" + +echo "==========================================" +echo "开始构建 WVP 镜像" +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 + +# 检查 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 \ + --no-cache \ + --platform ${PLATFORM} \ + -t ${FULL_IMAGE_NAME} \ + -f docker/wvp/${DOCKERFILE} \ + --push \ + . + +echo "" +echo "==========================================" +echo "构建完成!" +echo "镜像已推送到: ${FULL_IMAGE_NAME}" +echo "==========================================" diff --git a/reademe/use.md b/reademe/use.md index 3d831df..627cfcf 100644 --- a/reademe/use.md +++ b/reademe/use.md @@ -9,9 +9,21 @@ mac 本地构建过程: 2.2 修改docker-compose.yaml中使用wvp镜像的版本号 2.3 执行docker compose up -d +mac 发布流程 +1 构建并推送镜像 +1.1 cd到 docker/wvp目录下 +1.2 修改build-and-push-wvp中的版本号 +1.2 执行 ./build-and-push-wvp.sh +2 部署 +2.1 将docker目录全部拷贝到需要部署到服务器 +2.2 修改docker-compose.yaml中使用wvp镜像的版本号 +2.3 在.env中添加REGISTRY=registry.t-aaron.com/ +2.4 修改.env中其他的环境变量值 +2.5 执行docker compose up -d ~~~~~~~~~~~以下内容忽略~~~~~~~~~ + 步骤1:准备 buildx 环境 # 创建并启用 multiarch builder docker buildx create --name multiarch --use @@ -54,6 +66,39 @@ docker rmi mysql:8 docker tag mysql:8-arm64-backup mysql:8 docker rmi mysql:8-arm64-backup +# ===== eclipse-temurin:17-jdk ===== +# 备份本地 arm64 镜像 +docker tag eclipse-temurin:17-jdk eclipse-temurin:17-jdk-arm64-backup + +# 拉取 amd64 版本 +docker pull --platform linux/amd64 eclipse-temurin:17-jdk + +# 推送到私有仓库 +docker tag eclipse-temurin:17-jdk registry.t-aaron.com/eclipse-temurin:17-jdk +docker push registry.t-aaron.com/eclipse-temurin:17-jdk + +# 恢复本地 arm64 版本 +docker rmi eclipse-temurin:17-jdk +docker tag eclipse-temurin:17-jdk-arm64-backup eclipse-temurin:17-jdk +docker rmi eclipse-temurin:17-jdk-arm64-backup + +# ===== eclipse-temurin:17-jre ===== +# 备份本地 arm64 镜像 +docker tag eclipse-temurin:17-jre eclipse-temurin:17-jre-arm64-backup + +# 拉取 amd64 版本 +docker pull --platform linux/amd64 eclipse-temurin:17-jre + +# 推送到私有仓库 +docker tag eclipse-temurin:17-jre registry.t-aaron.com/eclipse-temurin:17-jre +docker push registry.t-aaron.com/eclipse-temurin:17-jre + +# 恢复本地 arm64 版本 +docker rmi eclipse-temurin:17-jre +docker tag eclipse-temurin:17-jre-arm64-backup eclipse-temurin:17-jre +docker rmi eclipse-temurin:17-jre-arm64-backup + + # ===== ZLMediaKit ===== # 备份本地 arm64 镜像 docker tag zlmediakit/zlmediakit:master zlmediakit-master-arm64-backup @@ -80,6 +125,12 @@ docker buildx build \ -f docker/wvp/Dockerfile \ --push \ . + +上述步骤已经写入脚本 +cd /Users/sunpeng/workspace/stream-deploy/docker +chmod +x build-and-push-wvp.sh +./build-and-push-wvp.sh + 步骤5:修改 docker-compose.yml 将以下镜像地址修改为私有仓库地址: # 第4行:redis