FROM arm64v8/ubuntu:22.04 ENV DEBIAN_FRONTEND=noninteractive RUN apt-get update && \ apt-get install -y --no-install-recommends \ # 基础工具 sudo \ build-essential \ libmysqlclient-dev \ libmysqlcppconn-dev \ cmake \ git \ gdb \ vim \ unzip \ pkg-config \ # PPA 管理工具 software-properties-common \ gpg-agent \ && \ 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 && \ apt-get install -y --no-install-recommends \ libespeak1 \ python3 \ python3-pip \ libssl-dev \ libspdlog-dev \ libsqlite3-dev \ libboost-all-dev \ librockchip-mpp-dev \ librga-dev \ gstreamer1.0-rockchip \ libgstreamer1.0-dev \ libgstreamer-plugins-base1.0-dev \ alsa-utils \ libasound2-plugins \ gstreamer1.0-alsa \ 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 \ gstreamer1.0-rtsp \ libopencv-dev \ nmap \ && \ 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 && \ groupadd -g 29 render || true && \ usermod -a -G dialout dev && \ usermod -a -G video dev && \ usermod -a -G render dev && \ usermod -a -G audio dev && \ echo "dev ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/dev-nopasswd COPY external/abseil-cpp /tmp/abseil-cpp RUN cd /tmp/abseil-cpp && \ cmake -B build \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_CXX_STANDARD=17 \ -DCMAKE_POSITION_INDEPENDENT_CODE=ON \ -DABSL_PROPAGATE_CXX_STD=ON \ -DBUILD_TESTING=OFF \ -DABSL_BUILD_TESTING=OFF \ -DABSL_USE_GOOGLETEST_HEAD=OFF && \ cmake --build build --target install -j$(nproc) && \ rm -rf /tmp/abseil-cpp RUN echo "umask 0002" > /etc/profile.d/99-shared-umask.sh && \ chmod +x /etc/profile.d/99-shared-umask.sh 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 COPY rknn_sdk/librknn_api/include/rknn_api.h /usr/local/include/ COPY rknn_sdk/rknn_server/aarch64/usr/bin/rknn_server /usr/bin/rknn_server COPY rknn_sdk/librknn_api/aarch64/librknnrt.so /usr/lib/librknnrt.so COPY rknn_sdk/librknn_api/aarch64/librknn_api.so /usr/lib/librknn_api.so COPY rknn_sdk/whl/*.whl /tmp/rknn_wheels/ RUN pip3 install /tmp/rknn_wheels/*.whl && \ rm -rf /tmp/rknn_wheels RUN chmod +x /usr/bin/rknn_server RUN ldconfig RUN rm -rf /var/lib/apt/lists/* USER dev RUN pip install --no-cache-dir --user -i https://mirrors.aliyun.com/pypi/simple/ \ onvif-zeep \ python-nmap \ psutil \ paramiko RUN echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bash_profile USER dev CMD ["/bin/bash"]