FROM 172.31.127.251:8083/library/compile:1.0.0 as builder
ARG PROJECTVERSION
WORKDIR /compile
COPY . .
RUN API_MODULE=$(ls -d *-api 2>/dev/null | head -1) && \
    SVC_MODULE=$(ls -d *-svc 2>/dev/null | head -1) && \
    echo "Packaging all modules..." && \
    mvn clean package -DskipTests -Drevision=$PROJECTVERSION && \
    if [ -n "$API_MODULE" ]; then \
      echo "Found API module: $API_MODULE, deploying and packaging..."; \
    fi && \
    if [ -n "$SVC_MODULE" ]; then \
      echo "Found SVC module: $SVC_MODULE, copying from $SVC_MODULE target..." && \
      find "$SVC_MODULE/target" -maxdepth 1 -name "*.jar" ! -name "*-sources.jar" -exec cp {} . \; ; \
    else \
      echo "No SVC module found, copying from root target..." && \
      find "target" -maxdepth 1 -name "*.jar" ! -name "*-sources.jar" -exec cp {} . \; ; \
    fi


FROM 172.31.127.251:8083/library/java21:1.0.0
ARG PROJECTCODE
ARG PROJECTVERSION
LABEL author=wangchuan<wangzefu520@163.com>
COPY docker-entrypoint.sh /usr/local/bin/
COPY --from=builder /compile/*.jar $APP_HOME
ENV ENV_ACTIVE="prod" \
    PROJECT_NAME="${PROJECTCODE}" \
    PROJECT_VERSION="${PROJECTVERSION}" \
    JAVA_OPS="-Xms512m -Xmx512m \
              -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m" \
    APP_OPS="" \
    SKYWALKING_OPS="" \
    GC_OPS="-XX:+UseG1GC \
            -XX:MaxGCPauseMillis=200 \
            -XX:MaxDirectMemorySize=256m \
            -XX:+UseContainerSupport \
            -XX:+UseStringDeduplication \
            -XX:+OptimizeStringConcat \
            -Djava.security.egd=file:/dev/./urandom \
            -Dspring.backgroundpreinitializer.ignore=true \
            -Duser.timezone=GMT+08 \
            -XX:+HeapDumpOnOutOfMemoryError \
            -Xlog:gc*=info:file=$LOGS_HOME/gc.log:time,level,tags:filecount=30,filesize=50M \
            -XX:HeapDumpPath=$LOGS_HOME/app.dump \
            -DJM.LOG.PATH=/tmp/nacos/logs \
            -DJM.SNAPSHOT.PATH=/tmp/nacos/naming"
RUN addgroup -g 1000 1000 && \
    adduser -u 1000 -G 1000 -S -D -H 1000 && \
    chown 1000:1000 -R $APP_HOME $LOGS_HOME && \
    chmod 744 /usr/local/bin/docker-entrypoint.sh &&  \
    chmod 444 $APP_HOME/*.jar
WORKDIR $APP_HOME
ENTRYPOINT ["docker-entrypoint.sh"]
