# ---- Build Stage ---- FROM eclipse-temurin:21-jdk-jammy AS builder WORKDIR /workspace # Gradle wrapper 및 빌드 설정 복사 (캐시 레이어 최적화) COPY gradlew settings.gradle build.gradle ./ COPY gradle ./gradle # 의존성 다운로드 (소스 변경 시 재빌드 방지) RUN chmod +x gradlew && ./gradlew dependencies --no-daemon -q || true # 소스 복사 후 빌드 (테스트 제외) COPY src ./src RUN ./gradlew clean bootJar -x test --no-daemon -q # ---- Runtime Stage ---- FROM eclipse-temurin:21-jre-jammy WORKDIR /app # 출력 디렉토리 생성 RUN mkdir -p /data/model_output/export # JAR 복사 COPY --from=builder /workspace/build/libs/shp-exporter-v2.jar app.jar # GeoServer 크리덴셜은 환경변수로 주입 ENV GEOSERVER_USERNAME="" ENV GEOSERVER_PASSWORD="" ENTRYPOINT ["java", \ "-Xmx4g", "-Xms512m", \ "-XX:+UseG1GC", \ "-XX:MaxGCPauseMillis=200", \ "-XX:G1HeapRegionSize=16m", \ "-XX:+ParallelRefProcEnabled", \ "-jar", "app.jar"]