158 lines
2.9 KiB
Bash
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 项目部署完成 =========="
|