Dockerfile 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. # 多阶段构建Dockerfile for AMD64平台
  2. # RTSP视频流并发拉取系统
  3. # 构建参数定义平台架构,默认为linux/amd64
  4. ARG BUILDPLATFORM=linux/amd64
  5. ARG TARGETPLATFORM=linux/amd64
  6. # ============================================
  7. # 阶段1: 构建环境
  8. # ============================================
  9. FROM --platform=$BUILDPLATFORM ubuntu:22.04 AS builder
  10. # 设置环境变量避免交互式提示
  11. ENV DEBIAN_FRONTEND=noninteractive
  12. ENV TZ=Asia/Shanghai
  13. # 安装构建依赖
  14. RUN apt-get update && apt-get install -y \
  15. build-essential \
  16. cmake \
  17. git \
  18. wget \
  19. pkg-config \
  20. libavcodec-dev \
  21. libavformat-dev \
  22. libavutil-dev \
  23. libswscale-dev \
  24. libfmt-dev \
  25. libboost-all-dev \
  26. && apt-get clean \
  27. && rm -rf /var/lib/apt/lists/*
  28. # 使用SourceForge镜像下载Boost 1.82(更稳定的下载源)
  29. RUN cd /tmp && \
  30. 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 && \
  31. file boost_1_82_0.tar.bz2 && \
  32. tar -xjf boost_1_82_0.tar.bz2 && \
  33. cd boost_1_82_0 && \
  34. ./bootstrap.sh --with-libraries=system,json && \
  35. ./b2 -j$(nproc) variant=release link=shared threading=multi install && \
  36. ldconfig && \
  37. cd / && \
  38. rm -rf /tmp/boost_1_82_0*
  39. # 创建工作目录
  40. WORKDIR /app
  41. # 复制项目文件
  42. COPY CMakeLists.txt ./
  43. COPY include/ ./include/
  44. COPY src/ ./src/
  45. COPY main.cpp ./
  46. COPY config.json ./
  47. COPY video_manager.html ./
  48. # 创建构建目录并编译
  49. RUN mkdir -p build && \
  50. cd build && \
  51. cmake .. && \
  52. make -j$(nproc)
  53. # ============================================
  54. # 阶段2: 运行环境
  55. # ============================================
  56. FROM ubuntu:22.04
  57. # 设置环境变量
  58. ENV DEBIAN_FRONTEND=noninteractive
  59. ENV TZ=Asia/Shanghai
  60. # 安装运行时依赖
  61. RUN apt-get update && apt-get install -y \
  62. libavcodec-dev \
  63. libavformat-dev \
  64. libavutil-dev \
  65. libswscale-dev \
  66. libfmt-dev \
  67. libboost-system-dev \
  68. curl \
  69. && apt-get clean \
  70. && rm -rf /var/lib/apt/lists/*
  71. # 从构建阶段复制Boost库
  72. COPY --from=builder /usr/local/lib/libboost* /usr/local/lib/
  73. COPY --from=builder /usr/local/include/boost /usr/local/include/boost
  74. # 更新库链接缓存
  75. RUN ldconfig
  76. # 创建应用目录
  77. WORKDIR /app
  78. # 从构建阶段复制编译好的可执行文件
  79. COPY --from=builder /app/build/jtjai_media /app/jtjai_media
  80. # 复制配置文件和Web资源
  81. COPY --from=builder /app/config.json /app/config.json
  82. COPY --from=builder /app/video_manager.html /app/video_manager.html
  83. # 创建输出目录
  84. RUN mkdir -p /app/output
  85. # 暴露HTTP服务端口
  86. EXPOSE 8080
  87. # 设置启动命令
  88. CMD ["/app/jtjai_media", "/app/config.json"]