rk1808docker-build-fireleave/deploy_fire_leave.sh

158 lines
2.9 KiB
Bash

#!/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 项目部署完成 =========="