diff --git a/docker-compose.yml b/docker-compose.yml index 67fc045..263a2fe 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -7,6 +7,7 @@ services: container_name: edge-proxy-shared-dev image: edge-proxy-edge-proxy-dev:latest platform: linux/arm64 + privileged: true devices: - /dev/ttyS7:/dev/ttyS7 - /dev/ttyS9:/dev/ttyS9 @@ -22,7 +23,6 @@ services: - "110" volumes: - .:/app - - /proc/device-tree:/proc/device-tree:ro ports: - "8888:8888" diff --git a/docker/Dockerfile b/docker/Dockerfile index 2c8afb1..62d7f23 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,17 +1,5 @@ -# ================================================================= -# 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 \ # 基础工具 @@ -23,25 +11,26 @@ RUN apt-get update && \ vim \ unzip \ pkg-config \ - # 添加 'universe' 仓库 + # PPA 管理工具 software-properties-common \ + gpg-agent \ && \ - # 添加 universe 仓库并再次更新 - add-apt-repository universe && \ + add-apt-repository -y ppa:jjriek/panfork-mesa && \ + add-apt-repository -y ppa:jjriek/rockchip && \ + add-apt-repository -y ppa:jjriek/rockchip-multimedia && \ 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 核心 + librockchip-mpp-dev \ + librga-dev \ + gstreamer1.0-rockchip \ libgstreamer1.0-dev \ libgstreamer-plugins-base1.0-dev \ gstreamer1.0-plugins-base \ @@ -53,22 +42,8 @@ RUN apt-get update && \ 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 \ && \ pip3 install --no-cache-dir onvif_zeep && \ - \ - # 用户和组创建 groupadd -r developers && \ useradd -ms /bin/bash -g developers -G sudo dev && \ groupadd -g 20 dialout || true && \ @@ -79,109 +54,21 @@ RUN apt-get update && \ 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 -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 -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 +RUN rm -rf /var/lib/apt/lists/* 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"] \ No newline at end of file diff --git a/mpp-develop.zip b/mpp-develop.zip deleted file mode 100644 index 571ca19..0000000 Binary files a/mpp-develop.zip and /dev/null differ