Dockerfile 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  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. libboost-all-dev \
  25. libfmt-dev \
  26. && apt-get clean \
  27. && rm -rf /var/lib/apt/lists/*
  28. # 创建工作目录
  29. WORKDIR /app
  30. # 复制项目文件
  31. COPY CMakeLists.txt ./
  32. COPY include/ ./include/
  33. COPY src/ ./src/
  34. COPY main.cpp ./
  35. COPY config.json ./
  36. COPY video_manager.html ./
  37. # 创建构建目录并编译
  38. RUN mkdir -p build && \
  39. cd build && \
  40. cmake .. && \
  41. make -j$(nproc)
  42. # ============================================
  43. # 阶段2: 运行环境
  44. # ============================================
  45. FROM ubuntu:22.04
  46. # 设置环境变量
  47. ENV DEBIAN_FRONTEND=noninteractive
  48. ENV TZ=Asia/Shanghai
  49. # 安装运行时依赖
  50. RUN apt-get update && apt-get install -y \
  51. libavcodec-dev \
  52. libavformat-dev \
  53. libavutil-dev \
  54. libswscale-dev \
  55. libboost-all-dev \
  56. libfmt-dev \
  57. curl \
  58. && apt-get clean \
  59. && rm -rf /var/lib/apt/lists/*
  60. # 创建应用目录
  61. WORKDIR /app
  62. # 从构建阶段复制编译好的可执行文件
  63. COPY --from=builder /app/build/jtjai_media /app/jtjai_media
  64. # 复制配置文件和Web资源
  65. COPY --from=builder /app/config.json /app/config.json
  66. COPY --from=builder /app/video_manager.html /app/video_manager.html
  67. # 创建输出目录
  68. RUN mkdir -p /app/output
  69. # 暴露HTTP服务端口
  70. EXPOSE 8080
  71. # 设置启动命令
  72. CMD ["/app/jtjai_media", "/app/config.json"]