Dockerfile.old 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. # 多阶段构建Dockerfile for AMD64平台
  2. # RTSP视频流并发拉取系统
  3. # 构建参数定义平台架构,强制使用AMD64
  4. ARG BUILDPLATFORM=linux/amd64
  5. ARG TARGETPLATFORM=linux/amd64
  6. # ============================================
  7. # 阶段1: 构建环境 - 使用国内镜像加速
  8. # ============================================
  9. FROM --platform=$BUILDPLATFORM k8s.device.wenhq.top:8583/docker_r/ubuntu:22.04 AS builder
  10. # 设置环境变量避免交互式提示
  11. ENV DEBIAN_FRONTEND=noninteractive
  12. ENV TZ=Asia/Shanghai
  13. # 更换为清华大学镜像源
  14. # RUN sed -i 's@//.*archive.ubuntu.com@//mirrors.tuna.tsinghua.edu.cn@g' /etc/apt/sources.list && \
  15. # sed -i 's@//.*security.ubuntu.com@//mirrors.tuna.tsinghua.edu.cn@g' /etc/apt/sources.list
  16. # 安装构建依赖
  17. # RUN apt-get update && apt-get install -y \
  18. # build-essential \
  19. # cmake \
  20. # git \
  21. # wget \
  22. # pkg-config \
  23. # libavcodec-dev \
  24. # libavformat-dev \
  25. # libavutil-dev \
  26. # libswscale-dev \
  27. # libfmt-dev \
  28. # libboost-all-dev \
  29. # && apt-get clean \
  30. # && rm -rf /var/lib/apt/lists/*
  31. # 使用SourceForge镜像下载Boost 1.82(更稳定的下载源)
  32. # RUN cd /tmp && \
  33. # 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 && \
  34. # file boost_1_82_0.tar.bz2 && \
  35. # tar -xjf boost_1_82_0.tar.bz2 && \
  36. # cd boost_1_82_0 && \
  37. # ./bootstrap.sh --with-libraries=system,json && \
  38. # ./b2 -j$(nproc) variant=release link=shared threading=multi install && \
  39. # ldconfig && \
  40. # cd / && \
  41. # rm -rf /tmp/boost_1_82_0*
  42. # 创建工作目录
  43. WORKDIR /app
  44. # 复制项目文件
  45. COPY CMakeLists.txt ./
  46. COPY include/ ./include/
  47. COPY src/ ./src/
  48. COPY main.cpp ./
  49. COPY http_server_main.cpp ./
  50. COPY config.json ./
  51. COPY video_manager.html ./
  52. # 创建构建目录并编译
  53. RUN mkdir -p build && \
  54. cd build && \
  55. cmake .. && \
  56. make -j$(nproc)
  57. # ============================================
  58. # 阶段2: 运行环境 - 使用已配置好的基础镜像
  59. # ============================================
  60. FROM --platform=$TARGETPLATFORM k8s.device.wenhq.top:8583/docker_r/ubuntu:22.04
  61. # 设置环境变量
  62. ENV DEBIAN_FRONTEND=noninteractive
  63. ENV TZ=Asia/Shanghai
  64. # 如果需要额外安装调试工具,可以在这里添加
  65. # RUN apt-get update && apt-get install -y \
  66. # curl \
  67. # && apt-get clean \
  68. # && rm -rf /var/lib/apt/lists/*
  69. # 创建应用目录
  70. WORKDIR /app
  71. # 从构建阶段复制编译好的可执行文件
  72. COPY --from=builder /app/build/jtjai_media /app/jtjai_media
  73. COPY --from=builder /app/build/jtjai_http_server /app/jtjai_http_server
  74. # 复制配置文件和Web资源
  75. COPY --from=builder /app/config.json /app/config.json
  76. COPY --from=builder /app/video_manager.html /app/video_manager.html
  77. # 复制RTSP调试脚本
  78. COPY rtsp-debug.sh /app/rtsp-debug.sh
  79. RUN chmod +x /app/rtsp-debug.sh
  80. # 创建输出目录
  81. RUN mkdir -p /app/output
  82. # 暴露HTTP服务端口
  83. EXPOSE 8080
  84. # 设置健康检查
  85. HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
  86. CMD curl -f http://localhost:8080/api || exit 1
  87. # 设置启动命令(使用绝对路径)
  88. CMD ["/app/jtjai_media", "/app/config.json"]