# --- 第一阶段：构建阶段 ---
FROM registry.cn-chengdu.aliyuncs.com/azysrv/maven:3.9.6-eclipse-temurin-21 AS builder

WORKDIR /app

# 创建并写入阿里云镜像配置到容器的 settings.xml
RUN mkdir -p /root/.m2 && \
    echo '<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" \
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" \
      xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd"> \
      <mirrors> \
        <mirror> \
          <id>aliyunmaven</id> \
          <mirrorOf>external:*,!jitpack.io</mirrorOf> \
          <name>Aliyun Maven</name> \
          <url>https://maven.aliyun.com/repository/public</url> \
        </mirror> \
      </mirrors> \
    </settings>' > /root/.m2/settings.xml

# 1. 复制所有 pom.xml
COPY pom.xml .
COPY common/pom.xml common/
COPY agent/pom.xml agent/
COPY mgr/pom.xml mgr/

# 2. 【关键】利用 go-offline 提前下载并缓存所有依赖
# 这一步会根据上面的 pom.xml 下载依赖。只要 pom 不变，这一层永远使用缓存
#RUN mvn dependency:go-offline -B
RUN mvn clean compile -DskipTests&& \
    mvn de.qaware.maven:go-offline-maven-plugin:resolve-dependencies || true

# 3. 复制源代码（此时代码变动，只会触发从这里开始的层，前面的依赖层已缓存）
COPY common/ common/
COPY mgr/ mgr/
COPY bin/mgr bin/mgr

# 4. 执行构建
RUN mvn clean install -DskipTests -pl common -am
RUN mvn clean package -DskipTests -pl mgr -am

# --- 第二阶段：运行阶段 ---
FROM registry.cn-chengdu.aliyuncs.com/azysrv/eclipse-temurin:21-jre-alpine

WORKDIR /app

# 从构建阶段复制打包好的 JAR
# 假设你的打包命名是 mgr-1.0-SNAPSHOT.jar，请根据实际情况调整
COPY --from=builder /app/bin/mgr /app

# 暴露端口（根据 mgr 实际端口修改）
EXPOSE 4030

RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone

# 启动命令
ENV JAVA_OPTS="-Xms2g -Xmx4g -XX:+UseG1GC"

ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -jar ops-mgr.jar"]