# ==============================================================================
# 📦 Spring Boot Executable JAR 배포용 Dockerfile
# Base: Eclipse Temurin OpenJDK 25 Alpine
# 포트: @httpPort@
# 실행: libs/*.jar + bin/start.sh
# ==============================================================================
FROM eclipse-temurin:25-jdk-alpine

WORKDIR /app

# Alpine 기본 패키지 (bash, shadow, su-exec, tzdata)
RUN apk add --no-cache bash su-exec shadow tzdata

ARG APP_NAME="@appName@"
# APP_NAME 기반 비루트 계정 생성 (기본 UID/GID: 1000)
RUN CLEAN_APP_NAME=$(echo "$APP_NAME" | tr '[:upper:]' '[:lower:]' | sed 's/[^a-z0-9]//g') && \
    APP_USER="${CLEAN_APP_NAME}user" && \
    addgroup -g 1000 ${APP_USER} && adduser -u 1000 -G ${APP_USER} -S ${APP_USER}

# JAR 배포 패키지 산출물 복사 (gradle packageJar 로 생성된 내용)
COPY libs/ /app/libs/
COPY config/ /app/config/
COPY bin/ /app/bin/

# 실행 권한 부여 및 소유권 변경
RUN CLEAN_APP_NAME=$(echo "$APP_NAME" | tr '[:upper:]' '[:lower:]' | sed 's/[^a-z0-9]//g') && \
    APP_USER="${CLEAN_APP_NAME}user" && \
    chmod +x /app/bin/*.sh && chown -R ${APP_USER}:${APP_USER} /app

# 서비스 포트 노출
EXPOSE @httpPort@

# 애플리케이션 시작
ENTRYPOINT ["/app/bin/start.sh"]
