# ================================================================= # Edge Proxy - 开发环境 Dockerfile (V9 - 源码编译版) # 严格遵循 "边带配置.docx" 文档 (MPP/RGA/GStreamer 均使用本地包) # ================================================================= FROM arm64v8/ubuntu:22.04 # 1. 基础环境设置 # ================================= WORKDIR /app ENV DEBIAN_FRONTEND=noninteractive # 2. 安装依赖、创建用户和组 # ================================= RUN apt-get update && \ apt-get install -y --no-install-recommends \ # 基础工具 sudo \ build-essential \ cmake \ git \ gdb \ vim \ unzip \ pkg-config \ # 添加 'universe' 仓库 software-properties-common \ && \ # 添加 universe 仓库并再次更新 add-apt-repository universe && \ apt-get update && \ # 一次性安装所有依赖 (综合 "边带配置.docx" 的所有 apt install) apt-get install -y --no-install-recommends \ # Piper TTS 所需 espeak-ng-data \ libespeak1 \ python3 \ python3-pip \ # C++ 开发库 libssl-dev \ libspdlog-dev \ libsqlite3-dev \ libboost-all-dev \ # GStreamer 核心 libgstreamer1.0-dev \ libgstreamer-plugins-base1.0-dev \ gstreamer1.0-plugins-base \ gstreamer1.0-plugins-good \ gstreamer1.0-plugins-bad \ gstreamer1.0-plugins-ugly \ gstreamer1.0-libav \ gstreamer1.0-tools \ gstreamer1.0-x \ gstreamer1.0-alsa \ gstreamer1.0-pulseaudio \ # 编译工具 meson \ ninja-build \ # Rockchip 硬件库依赖 libdrm-dev \ libavcodec-dev \ libavformat-dev \ libjpeg-dev \ libv4l-dev \ libx11-dev \ libegl1-mesa-dev \ libgles2-mesa-dev \ && \ # 用户和组创建 groupadd -r developers && \ useradd -ms /bin/bash -g developers -G sudo dev && \ groupadd -g 20 dialout || true && \ groupadd -g 44 video || true && \ groupadd -g 110 render || true && \ usermod -a -G dialout dev && \ usermod -a -G video dev && \ usermod -a -G render dev && \ echo "dev ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/dev-nopasswd # 权限和协作设置 # ================================= RUN echo "umask 0002" > /etc/profile.d/99-shared-umask.sh && \ chmod +x /etc/profile.d/99-shared-umask.sh # 编译并安装 Paho MQTT 库 # ================================= COPY . /tmp/build-context RUN cd /tmp/build-context/external/paho.mqtt.c && \ cmake -Bbuild -H. \ -DPAHO_WITH_SSL=ON \ -DPAHO_BUILD_SAMPLES=OFF \ -DPAHO_BUILD_DOCUMENTATION=OFF && \ cmake --build build --target install && \ \ cd /tmp/build-context/external/paho.mqtt.cpp && \ cmake -Bbuild -H. \ -DPAHO_WITH_SSL=ON \ -DPAHO_BUILD_SAMPLES=OFF \ -DPAHO_BUILD_DOCUMENTATION=OFF && \ cmake --build build --target install && \ rm -rf /tmp/build-context # 编译 MPP COPY mpp-develop.zip /tmp/ RUN cd /tmp && \ unzip mpp-develop.zip && \ cd mpp-develop && \ mkdir rkmpp_build && \ cd rkmpp_build && \ cmake \ -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_C_FLAGS="-O3 -march=armv8.2-a+simd+crypto -mtune=cortex-a76" \ -DCMAKE_CXX_FLAGS="-O3 -march=armv8.2-a+simd+crypto -mtune=cortex-a76" \ -DBUILD_SHARED_LIBS=ON \ -DBUILD_TEST=OFF \ -DHAVE_DRM=ON \ -DHAVE_AVCODEC=ON \ -DHAVE_AVFORMAT=ON \ -DHAVE_LIBV4L2=ON \ -DHAVE_JPEGD=ON \ -DHAVE_RKVDEC=ON \ -DHAVE_RKVENC=ON \ -DHAVE_MPP_RGA=ON \ .. && \ make -j$(nproc) && \ make install && \ cd / && \ rm -rf /tmp/mpp-develop* # 编译 RGA COPY rk-mirrors-linux-rga-multi.zip /tmp/ RUN cd /tmp && \ unzip rk-mirrors-linux-rga-multi.zip && \ cd rk-mirrors-linux-rga-multi && \ meson setup . rkrga_build \ --prefix=/usr \ --libdir=lib \ --buildtype=release \ --default-library=shared \ -Dcpp_args=-fpermissive \ -Dlibdrm=false \ -Dlibrga_demo=false && \ meson configure rkrga_build && \ ninja -C rkrga_build install && \ cd / && \ rm -rf /tmp/rk-mirrors-linux-rga-multi* # 编译 GStreamer 插件 COPY gstreamer-rockchip-master.zip /tmp/ RUN cd /tmp && \ unzip gstreamer-rockchip-master.zip && \ cd gstreamer-rockchip-master && \ mkdir build && \ cd build && \ meson setup .. \ --prefix=/usr \ --libdir=lib/aarch64-linux-gnu \ --buildtype=release \ --optimization=3 \ --default-library=shared \ -Dc_args="-I/usr/include/rga -I/usr/include/rockchip -I/usr/include/drm -O3 -march=armv8.2-a+simd+crypto -mtune=cortex-a76 -fPIC" \ -Dc_link_args="-Wl,-Bsymbolic -Wl,-O3" \ -Dpackage-name="GStreamer Rockchip RK3588" \ -Dpackage-origin="https://github.com/rockchip-linux/gst-rockchip" \ -Drockchipmpp=enabled \ -Drga=enabled && \ ninja -j$(nproc) && \ ninja install && \ ldconfig && \ cd / && \ rm -rf /tmp/gstreamer-rockchip-master* && \ rm -rf /var/lib/apt/lists/* # 8. 安装 Piper TTS COPY piper_models/ /app/piper_models/ USER dev RUN pip install --no-cache-dir --user -i https://mirrors.aliyun.com/pypi/simple/ piper-tts RUN echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bash_profile # 9. 设置默认用户 USER dev CMD ["/bin/bash"]