# 多阶段构建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"]