|
@@ -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"]
|