# ============================================
# 武术赛事管理系统 - 完整构建 Dockerfile
# 包含 martial-tool 编译 + martial-master 编译
# ============================================

# 构建阶段：使用 Maven + JDK 镜像
FROM maven:3.9-eclipse-temurin-17 AS builder

WORKDIR /build

# 复制 martial-tool（BladeX 框架）
COPY martial-tool /build/martial-tool

# 编译 martial-tool 并安装到本地仓库
RUN cd /build/martial-tool && \
    mvn clean install -DskipTests -q

# 复制 martial-master（后端项目）
COPY martial-master /build/martial-master

# 编译 martial-master
RUN cd /build/martial-master && \
    mvn clean package -DskipTests -q

# ============================================
# 运行阶段：使用轻量级 JRE 镜像
# ============================================
FROM eclipse-temurin:17-jre-jammy

LABEL maintainer="JohnSion"
LABEL description="武术比赛管理系统后端服务"

WORKDIR /app

# 从构建阶段复制 JAR 文件
COPY --from=builder /build/martial-master/target/blade-api.jar /app/blade-api.jar

# 暴露端口
EXPOSE 8123

# 健康检查
HEALTHCHECK --interval=30s --timeout=3s --start-period=60s --retries=3 \
  CMD curl -f http://localhost:8123/actuator/health || exit 1

# JVM 参数配置
ENV JAVA_OPTS="-Xms512m -Xmx1024m -XX:+UseG1GC"
ENV SPRING_PROFILE="dev"

# 启动命令
CMD ["sh", "-c", "java ${JAVA_OPTS} -jar /app/blade-api.jar --spring.profiles.active=${SPRING_PROFILE}"]
