- 从服务器拉取完整代码 - 按框架规范整理项目结构 - 配置 Drone CI 测试环境部署 - 包含后端(FastAPI)、前端(Vue3)、管理端 技术栈: Vue3 + TypeScript + FastAPI + MySQL
76 lines
1.5 KiB
Bash
Executable File
76 lines
1.5 KiB
Bash
Executable File
#!/bin/bash
|
|
# 构建脚本
|
|
|
|
set -e
|
|
|
|
# 颜色定义
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
NC='\033[0m' # No Color
|
|
|
|
# 函数定义
|
|
log() {
|
|
echo -e "${GREEN}[INFO]${NC} $1"
|
|
}
|
|
|
|
warn() {
|
|
echo -e "${YELLOW}[WARN]${NC} $1"
|
|
}
|
|
|
|
error() {
|
|
echo -e "${RED}[ERROR]${NC} $1"
|
|
}
|
|
|
|
# 检查 Docker 是否安装
|
|
if ! command -v docker &> /dev/null; then
|
|
error "Docker 未安装,请先安装 Docker"
|
|
exit 1
|
|
fi
|
|
|
|
# 检查 docker-compose 是否安装
|
|
if ! command -v docker-compose &> /dev/null; then
|
|
warn "docker-compose 未安装,尝试使用 docker compose"
|
|
DOCKER_COMPOSE="docker compose"
|
|
else
|
|
DOCKER_COMPOSE="docker-compose"
|
|
fi
|
|
|
|
# 获取参数
|
|
ENVIRONMENT=${1:-production}
|
|
VERSION=${2:-latest}
|
|
REGISTRY=${3:-""}
|
|
|
|
log "开始构建考培练系统前端..."
|
|
log "环境: $ENVIRONMENT"
|
|
log "版本: $VERSION"
|
|
|
|
# 设置镜像名称
|
|
IMAGE_NAME="kaopeilian-frontend"
|
|
if [ -n "$REGISTRY" ]; then
|
|
FULL_IMAGE_NAME="$REGISTRY/$IMAGE_NAME:$VERSION"
|
|
else
|
|
FULL_IMAGE_NAME="$IMAGE_NAME:$VERSION"
|
|
fi
|
|
|
|
# 构建镜像
|
|
log "构建 Docker 镜像: $FULL_IMAGE_NAME"
|
|
|
|
if [ "$ENVIRONMENT" = "development" ]; then
|
|
docker build --target development -t "$FULL_IMAGE_NAME-dev" .
|
|
log "开发环境镜像构建完成: $FULL_IMAGE_NAME-dev"
|
|
else
|
|
docker build --target production -t "$FULL_IMAGE_NAME" .
|
|
log "生产环境镜像构建完成: $FULL_IMAGE_NAME"
|
|
fi
|
|
|
|
# 清理悬挂镜像
|
|
log "清理悬挂镜像..."
|
|
docker image prune -f
|
|
|
|
log "构建完成!"
|
|
|
|
# 显示镜像信息
|
|
log "镜像信息:"
|
|
docker images | grep "$IMAGE_NAME" | head -5
|