wenhongquan преди 1 ден
родител
ревизия
2a87ea0bd3
променени са 4 файла, в които са добавени 128 реда и са изтрити 116 реда
  1. 13 78
      Dockerfile
  2. 108 0
      Dockerfile.old
  3. 0 37
      Dockerfile.simple
  4. 7 1
      docker-compose.yml

+ 13 - 78
Dockerfile

@@ -1,51 +1,16 @@
-# 多阶段构建Dockerfile for AMD64平台
-# RTSP视频流并发拉取系统
+# 多平台支持的单阶段构建Dockerfile
+# 使用ARG支持多架构构建
+ARG BUILDPLATFORM
+ARG TARGETPLATFORM
+ARG TARGETARCH
 
-# 构建参数定义平台架构,强制使用AMD64
-ARG BUILDPLATFORM=linux/amd64
-ARG TARGETPLATFORM=linux/amd64
+# 默认为linux/amd64以保持兼容性
+FROM --platform=${TARGETPLATFORM:-linux/amd64} k8s.device.wenhq.top:8583/docker_r/ubuntu:22.04
 
-# ============================================
-# 阶段1: 构建环境 - 使用国内镜像加速
-# ============================================
-FROM --platform=$BUILDPLATFORM k8s.device.wenhq.top:8583/docker_r/ubuntu:22.04 AS builder
-
-# 设置环境变量避免交互式提示
+# 设置环境变量
 ENV DEBIAN_FRONTEND=noninteractive
 ENV TZ=Asia/Shanghai
 
-# 更换为清华大学镜像源
-# RUN sed -i 's@//.*archive.ubuntu.com@//mirrors.tuna.tsinghua.edu.cn@g' /etc/apt/sources.list && \
-#     sed -i 's@//.*security.ubuntu.com@//mirrors.tuna.tsinghua.edu.cn@g' /etc/apt/sources.list
-
-# 安装构建依赖
-# RUN apt-get update && apt-get install -y \
-#     build-essential \
-#     cmake \
-#     git \
-#     wget \
-#     pkg-config \
-#     libavcodec-dev \
-#     libavformat-dev \
-#     libavutil-dev \
-#     libswscale-dev \
-#     libfmt-dev \
-#     libboost-all-dev \
-#     && apt-get clean \
-#     && rm -rf /var/lib/apt/lists/*
-
-# 使用SourceForge镜像下载Boost 1.82(更稳定的下载源)
-# RUN cd /tmp && \
-#     wget -q --show-progress https://sourceforge.net/projects/boost/files/boost/1.82.0/boost_1_82_0.tar.bz2/download -O boost_1_82_0.tar.bz2 && \
-#     file boost_1_82_0.tar.bz2 && \
-#     tar -xjf boost_1_82_0.tar.bz2 && \
-#     cd boost_1_82_0 && \
-#     ./bootstrap.sh --with-libraries=system,json && \
-#     ./b2 -j$(nproc) variant=release link=shared threading=multi install && \
-#     ldconfig && \
-#     cd / && \
-#     rm -rf /tmp/boost_1_82_0*
-
 # 创建工作目录
 WORKDIR /app
 
@@ -57,6 +22,10 @@ COPY main.cpp ./
 COPY http_server_main.cpp ./
 COPY config.json ./
 COPY video_manager.html ./
+COPY rtsp-debug.sh ./
+
+# 设置脚本权限
+RUN chmod +x ./rtsp-debug.sh
 
 # 创建构建目录并编译
 RUN mkdir -p build && \
@@ -64,45 +33,11 @@ RUN mkdir -p build && \
     cmake .. && \
     make -j$(nproc)
 
-# ============================================
-# 阶段2: 运行环境 - 使用已配置好的基础镜像
-# ============================================
-FROM --platform=$TARGETPLATFORM k8s.device.wenhq.top:8583/docker_r/ubuntu:22.04
-
-# 设置环境变量
-ENV DEBIAN_FRONTEND=noninteractive
-ENV TZ=Asia/Shanghai
-
-# 如果需要额外安装调试工具,可以在这里添加
-# RUN apt-get update && apt-get install -y \
-#     curl \
-#     && apt-get clean \
-#     && rm -rf /var/lib/apt/lists/*
-
-# 创建应用目录
-WORKDIR /app
-
-# 从构建阶段复制编译好的可执行文件
-COPY --from=builder /app/build/jtjai_media /app/jtjai_media
-COPY --from=builder /app/build/jtjai_http_server /app/jtjai_http_server
-
-# 复制配置文件和Web资源
-COPY --from=builder /app/config.json /app/config.json
-COPY --from=builder /app/video_manager.html /app/video_manager.html
-
-# 复制RTSP调试脚本
-COPY rtsp-debug.sh /app/rtsp-debug.sh
-RUN chmod +x /app/rtsp-debug.sh
-
 # 创建输出目录
 RUN mkdir -p /app/output
 
 # 暴露HTTP服务端口
 EXPOSE 8080
 
-# 设置健康检查
-HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
-  CMD curl -f http://localhost:8080/api || exit 1
-
 # 设置启动命令(使用绝对路径)
-CMD ["/app/jtjai_media", "/app/config.json"]
+CMD ["/app/build/jtjai_media", "/app/config.json"]

+ 108 - 0
Dockerfile.old

@@ -0,0 +1,108 @@
+# 多阶段构建Dockerfile for AMD64平台
+# RTSP视频流并发拉取系统
+
+# 构建参数定义平台架构,强制使用AMD64
+ARG BUILDPLATFORM=linux/amd64
+ARG TARGETPLATFORM=linux/amd64
+
+# ============================================
+# 阶段1: 构建环境 - 使用国内镜像加速
+# ============================================
+FROM --platform=$BUILDPLATFORM k8s.device.wenhq.top:8583/docker_r/ubuntu:22.04 AS builder
+
+# 设置环境变量避免交互式提示
+ENV DEBIAN_FRONTEND=noninteractive
+ENV TZ=Asia/Shanghai
+
+# 更换为清华大学镜像源
+# RUN sed -i 's@//.*archive.ubuntu.com@//mirrors.tuna.tsinghua.edu.cn@g' /etc/apt/sources.list && \
+#     sed -i 's@//.*security.ubuntu.com@//mirrors.tuna.tsinghua.edu.cn@g' /etc/apt/sources.list
+
+# 安装构建依赖
+# RUN apt-get update && apt-get install -y \
+#     build-essential \
+#     cmake \
+#     git \
+#     wget \
+#     pkg-config \
+#     libavcodec-dev \
+#     libavformat-dev \
+#     libavutil-dev \
+#     libswscale-dev \
+#     libfmt-dev \
+#     libboost-all-dev \
+#     && apt-get clean \
+#     && rm -rf /var/lib/apt/lists/*
+
+# 使用SourceForge镜像下载Boost 1.82(更稳定的下载源)
+# RUN cd /tmp && \
+#     wget -q --show-progress https://sourceforge.net/projects/boost/files/boost/1.82.0/boost_1_82_0.tar.bz2/download -O boost_1_82_0.tar.bz2 && \
+#     file boost_1_82_0.tar.bz2 && \
+#     tar -xjf boost_1_82_0.tar.bz2 && \
+#     cd boost_1_82_0 && \
+#     ./bootstrap.sh --with-libraries=system,json && \
+#     ./b2 -j$(nproc) variant=release link=shared threading=multi install && \
+#     ldconfig && \
+#     cd / && \
+#     rm -rf /tmp/boost_1_82_0*
+
+# 创建工作目录
+WORKDIR /app
+
+# 复制项目文件
+COPY CMakeLists.txt ./
+COPY include/ ./include/
+COPY src/ ./src/
+COPY main.cpp ./
+COPY http_server_main.cpp ./
+COPY config.json ./
+COPY video_manager.html ./
+
+# 创建构建目录并编译
+RUN mkdir -p build && \
+    cd build && \
+    cmake .. && \
+    make -j$(nproc)
+
+# ============================================
+# 阶段2: 运行环境 - 使用已配置好的基础镜像
+# ============================================
+FROM --platform=$TARGETPLATFORM k8s.device.wenhq.top:8583/docker_r/ubuntu:22.04
+
+# 设置环境变量
+ENV DEBIAN_FRONTEND=noninteractive
+ENV TZ=Asia/Shanghai
+
+# 如果需要额外安装调试工具,可以在这里添加
+# RUN apt-get update && apt-get install -y \
+#     curl \
+#     && apt-get clean \
+#     && rm -rf /var/lib/apt/lists/*
+
+# 创建应用目录
+WORKDIR /app
+
+# 从构建阶段复制编译好的可执行文件
+COPY --from=builder /app/build/jtjai_media /app/jtjai_media
+COPY --from=builder /app/build/jtjai_http_server /app/jtjai_http_server
+
+# 复制配置文件和Web资源
+COPY --from=builder /app/config.json /app/config.json
+COPY --from=builder /app/video_manager.html /app/video_manager.html
+
+# 复制RTSP调试脚本
+COPY rtsp-debug.sh /app/rtsp-debug.sh
+RUN chmod +x /app/rtsp-debug.sh
+
+# 创建输出目录
+RUN mkdir -p /app/output
+
+# 暴露HTTP服务端口
+EXPOSE 8080
+
+# 设置健康检查
+HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
+  CMD curl -f http://localhost:8080/api || exit 1
+
+# 设置启动命令(使用绝对路径)
+CMD ["/app/jtjai_media", "/app/config.json"]

+ 0 - 37
Dockerfile.simple

@@ -1,37 +0,0 @@
-# 简化单阶段构建Dockerfile用于快速测试
-FROM k8s.device.wenhq.top:8583/docker_r/ubuntu:22.04
-
-# 设置环境变量
-ENV DEBIAN_FRONTEND=noninteractive
-ENV TZ=Asia/Shanghai
-
-# 创建工作目录
-WORKDIR /app
-
-# 复制项目文件
-COPY CMakeLists.txt ./
-COPY include/ ./include/
-COPY src/ ./src/
-COPY main.cpp ./
-COPY http_server_main.cpp ./
-COPY config.json ./
-COPY video_manager.html ./
-COPY rtsp-debug.sh ./
-
-# 设置脚本权限
-RUN chmod +x ./rtsp-debug.sh
-
-# 创建构建目录并编译
-RUN mkdir -p build && \
-    cd build && \
-    cmake .. && \
-    make -j$(nproc)
-
-# 创建输出目录
-RUN mkdir -p /app/output
-
-# 暴露HTTP服务端口
-EXPOSE 8080
-
-# 设置启动命令(使用绝对路径)
-CMD ["/app/build/jtjai_media", "/app/config.json"]

+ 7 - 1
docker-compose.yml

@@ -5,7 +5,13 @@ services:
     build:
       context: .
       dockerfile: Dockerfile
-    platform: linux/amd64
+      # 支持多平台构建参数
+      args:
+        - BUILDPLATFORM=${BUILDPLATFORM:-linux/amd64}
+        - TARGETPLATFORM=${TARGETPLATFORM:-linux/amd64}
+        - TARGETARCH=${TARGETARCH:-amd64}
+    # 默认平台配置,可通过环境变量DOCKER_DEFAULT_PLATFORM覆盖
+    platform: ${DOCKER_DEFAULT_PLATFORM:-linux/amd64}
     image: k8s.device.wenhq.top:8583/docker_r/jtjai_media:latest
     container_name: jtjai_media
     # 使用host网络模式以解决RTSP连接问题