#!/bin/bash set -e PROJECT_DIR="/usr/local/rk1808-docker" IMAGE_NAME="fire_leave:latest" echo "========== fire_leave 项目部署 ==========" if [ "$(id -u)" != "0" ]; then echo "请使用 root 用户执行" exit 1 fi cd "$PROJECT_DIR" PROJECT_OK=1 LIB_OK=1 DEVICE_OK=1 BUILD_OK=0 RUN_SCRIPT_OK=0 echo "[1/6] 检查项目文件" for file in Dockerfile start.sh mp4-merge_0.1.11-1_arm64.deb models/yolov5 rundocker.sh; do if [ -e "$file" ]; then echo "存在: $file" else echo "缺失: $file" PROJECT_OK=0 fi done if [ "$PROJECT_OK" -ne 1 ]; then echo "项目文件不完整,终止部署" exit 1 fi chmod +x start.sh chmod +x models/yolov5 chmod +x rundocker.sh RUN_SCRIPT_OK=1 echo "[2/6] 检查 yolov5 动态库依赖" if ldd models/yolov5 >/tmp/yolov5_ldd.txt 2>&1; then cat /tmp/yolov5_ldd.txt | grep -i "avformat\|avcodec\|avutil\|swscale\|swresample" || true if grep -q "not found" /tmp/yolov5_ldd.txt; then echo "存在缺失动态库:" grep "not found" /tmp/yolov5_ldd.txt LIB_OK=0 else echo "yolov5 动态库检查通过" fi else echo "ldd 检查失败" LIB_OK=0 fi echo "[3/6] 检查设备节点" for dev in /dev/galcore /dev/rga /dev/vpu_service /dev/dri/card0; do if [ -e "$dev" ]; then echo "存在: $dev" else echo "缺失: $dev" DEVICE_OK=0 fi done if [ -d /lib/npu ]; then echo "存在: /lib/npu" else echo "缺失: /lib/npu" DEVICE_OK=0 fi if [ "$LIB_OK" -ne 1 ]; then echo "动态库异常,终止部署" exit 1 fi if [ "$DEVICE_OK" -ne 1 ]; then echo "设备节点异常,终止部署" exit 1 fi echo "[4/6] 构建 Docker 镜像" if docker build -t "$IMAGE_NAME" .; then BUILD_OK=1 echo "Docker 镜像构建成功: $IMAGE_NAME" else BUILD_OK=0 echo "Docker 镜像构建失败" exit 1 fi echo "[5/6] 检查 rundocker.sh" if [ -f rundocker.sh ]; then chmod +x rundocker.sh RUN_SCRIPT_OK=1 echo "rundocker.sh 存在,已设置可执行权限" else RUN_SCRIPT_OK=0 echo "rundocker.sh 不存在" fi echo "[6/6] 检查镜像" docker images | grep fire_leave || true echo echo "========== 部署结果汇总 ==========" if [ "$PROJECT_OK" -eq 1 ]; then echo "项目文件: 正常" else echo "项目文件: 异常" fi if [ "$LIB_OK" -eq 1 ]; then echo "yolov5 动态库: 正常" else echo "yolov5 动态库: 异常" fi if [ "$DEVICE_OK" -eq 1 ]; then echo "设备节点/NPU目录: 正常" else echo "设备节点/NPU目录: 异常" fi if [ "$BUILD_OK" -eq 1 ]; then echo "Docker 镜像构建: 成功" else echo "Docker 镜像构建: 失败" fi if docker image inspect "$IMAGE_NAME" >/dev/null 2>&1; then echo "Docker 镜像存在: $IMAGE_NAME" else echo "Docker 镜像不存在: $IMAGE_NAME" fi if [ "$RUN_SCRIPT_OK" -eq 1 ]; then echo "启动脚本: 正常 rundocker.sh" else echo "启动脚本: 缺失 rundocker.sh" fi echo echo "下一步操作:" echo " ./rundocker.sh" echo "========== fire_leave 项目部署完成 =========="