110 lines
3.0 KiB
Bash
Executable File
110 lines
3.0 KiB
Bash
Executable File
#!/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 |