#!/bin/bash # 使用Maven代理的构建脚本 set -e # 颜色定义 RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' # No Color # 项目信息 PROJECT_NAME="digital-archive" VERSION="latest" DOCKERFILE="Dockerfile" # 处理参数 USE_OPTIMIZED=false USE_ROBUST=false while [[ $# -gt 0 ]]; do case $1 in -o|--optimized) USE_OPTIMIZED=true DOCKERFILE="Dockerfile.optimized" shift ;; -r|--robust) USE_ROBUST=true DOCKERFILE="Dockerfile.robust" shift ;; -h|--help) echo "用法: $0 [选项]" echo "选项:" echo " -o, --optimized 使用优化的Dockerfile" echo " -r, --robust 使用容错的Dockerfile" echo " -h, --help 显示帮助信息" exit 0 ;; *) shift ;; esac done echo -e "${GREEN}=== 使用Maven代理构建数字档案系统 ===${NC}" echo -e "${YELLOW}Dockerfile: ${DOCKERFILE}${NC}" echo -e "${YELLOW}优化版本: ${USE_OPTIMIZED}${NC}" echo -e "${YELLOW}容错版本: ${USE_ROBUST}${NC}" # 检查Docker是否安装 if ! command -v docker &> /dev/null; then echo -e "${RED}错误: Docker未安装${NC}" exit 1 fi # 检查settings.xml是否存在 if [ ! -f "settings.xml" ]; then echo -e "${RED}错误: settings.xml文件不存在${NC}" exit 1 fi echo -e "${YELLOW}Maven配置文件:${NC}" echo " - 使用国内镜像加速" echo " - 阿里云Maven镜像" echo " - 华为云Maven镜像" echo " - 腾讯云Maven镜像" echo " - 网易云Maven镜像" echo -e "${YELLOW}Alpine包管理器配置:${NC}" echo " - 使用阿里云Alpine镜像源" if [ "$USE_ROBUST" = true ]; then echo " - 使用清华大学镜像源作为备份" echo " - 多镜像源容错机制" fi # 构建Docker镜像 echo -e "${YELLOW}开始构建Docker镜像...${NC}" docker build -f ${DOCKERFILE} -t ${PROJECT_NAME}:${VERSION} . if [ $? -eq 0 ]; then echo -e "${GREEN}Docker镜像构建成功: ${PROJECT_NAME}:${VERSION}${NC}" else echo -e "${RED}Docker镜像构建失败${NC}" exit 1 fi # 显示镜像信息 echo -e "${YELLOW}镜像信息:${NC}" docker images | grep ${PROJECT_NAME} # 显示镜像大小 echo -e "${YELLOW}镜像大小:${NC}" docker images ${PROJECT_NAME}:${VERSION} --format "table {{.Repository}}\t{{.Tag}}\t{{.Size}}" echo -e "${GREEN}构建完成!${NC}" echo -e "${YELLOW}使用以下命令测试镜像:${NC}" echo "docker run --rm -p 9081:9081 ${PROJECT_NAME}:${VERSION}" # 可选:推送到镜像仓库 read -p "是否推送到镜像仓库? (y/N): " -n 1 -r echo if [[ $REPLY =~ ^[Yy]$ ]]; then read -p "请输入镜像仓库地址: " REGISTRY if [ ! -z "$REGISTRY" ]; then docker tag ${PROJECT_NAME}:${VERSION} ${REGISTRY}/${PROJECT_NAME}:${VERSION} docker push ${REGISTRY}/${PROJECT_NAME}:${VERSION} echo -e "${GREEN}镜像已推送到: ${REGISTRY}/${PROJECT_NAME}:${VERSION}${NC}" fi fi