Dockerfile 2.0 KB

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