duidui_admin_web/build-deploy.sh
2026-03-27 10:38:12 +08:00

70 lines
2.0 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# 构建和打包脚本 - 在本地运行
# 用法: ./build-deploy.sh
set -e
IMAGE_NAME="duidui-admin-web"
TAR_FILE="deploy/duidui-admin-web.tar"
DEPLOY_DIR="deploy"
# 目标平台(默认构建 linux/amd64避免在 x86 服务器上出现 arm64 运行警告)
PLATFORM=${1:-linux/amd64}
echo "=========================================="
echo "开始构建和打包 (platform: $PLATFORM)"
echo "=========================================="
# 检测可用的容器工具(优先 docker其次 podman
if command -v docker >/dev/null 2>&1; then
CONTAINER_CLI="docker"
elif command -v podman >/dev/null 2>&1; then
CONTAINER_CLI="podman"
else
echo "错误: 未找到 docker 或 podman请先安装其一。"
exit 1
fi
echo "使用容器工具: $CONTAINER_CLI"
# 检查 dist 目录是否存在
if [ ! -d "dist" ]; then
echo "错误: dist 目录不存在,请先运行 npm run build"
exit 1
fi
# 创建 deploy 目录
echo "创建部署目录..."
mkdir -p $DEPLOY_DIR
# 构建 Docker 镜像(不使用缓存,确保使用最新的 dist 目录)
echo "构建 Docker 镜像(不使用缓存)..."
$CONTAINER_CLI build --no-cache --platform $PLATFORM -t $IMAGE_NAME:latest .
# 导出镜像为 tar 包
echo "导出镜像为 tar 包..."
$CONTAINER_CLI save $IMAGE_NAME:latest -o $TAR_FILE
# 复制部署脚本到 deploy 目录(如果还没有)
if [ ! -f "$DEPLOY_DIR/deploy.sh" ]; then
echo "复制部署脚本..."
cp deploy.sh $DEPLOY_DIR/
chmod +x $DEPLOY_DIR/deploy.sh
fi
# 获取文件大小
TAR_SIZE=$(du -h $TAR_FILE | cut -f1)
echo "=========================================="
echo "构建完成!"
echo "=========================================="
echo "镜像名称: $IMAGE_NAME:latest"
echo "tar 包路径: $TAR_FILE"
echo "文件大小: $TAR_SIZE"
echo ""
echo "部署步骤:"
echo "1. 将 deploy 目录下的所有文件上传到服务器"
echo "2. 在服务器上执行: cd deploy && ./deploy.sh [端口号]"
echo "=========================================="