# syntax=docker/dockerfile:1.7 # =================================================================== # Dockerfile for ZNS Import Service # =================================================================== ARG GRADLE_VERSION ARG JAVA_VERSION ARG BUILD_DATE ARG VERSION # =================================================================== # Build Stage # =================================================================== FROM gradle:${GRADLE_VERSION}-jdk${JAVA_VERSION}-alpine AS builder ARG SERVICE_PATH=zns-import/zns-import-service ARG SERVICE_NAME=zns-import-service WORKDIR /workspace # Gradle optimizations ENV GRADLE_OPTS="-Dorg.gradle.caching=true \ -Dorg.gradle.daemon=false \ -Dorg.gradle.parallel=true \ -Dorg.gradle.configureondemand=true \ -Xmx2g" # Copy build files COPY gradlew gradlew.bat gradle.properties settings.gradle.kts ./ COPY gradle/ gradle/ RUN chmod +x gradlew COPY platform/ platform/ COPY core/ core/ COPY build.gradle.kts ./ # Copy service modules COPY backend/services/zns-import/ backend/services/zns-import/ # Build service RUN ./gradlew :zns-import-service:bootJar --no-daemon # Extract JAR layers WORKDIR /builder RUN cp /workspace/backend/services/zns-import/zns-import-service/build/libs/*.jar app.jar && \ java -Djarmode=layertools -jar app.jar extract # =================================================================== # Runtime Stage # =================================================================== FROM eclipse-temurin:${JAVA_VERSION}-jre-alpine AS runtime ARG APP_USER=znsuser ARG APP_GROUP=znsgroup ARG APP_UID=1009 ARG APP_GID=1009 WORKDIR /app RUN apk add --no-cache curl jq tzdata RUN addgroup -g ${APP_GID} -S ${APP_GROUP} && \ adduser -u ${APP_UID} -S ${APP_USER} -G ${APP_GROUP} -h /app -s /bin/sh COPY --from=builder --chown=${APP_USER}:${APP_GROUP} /builder/dependencies/ ./ COPY --from=builder --chown=${APP_USER}:${APP_GROUP} /builder/spring-boot-loader/ ./ COPY --from=builder --chown=${APP_USER}:${APP_GROUP} /builder/snapshot-dependencies/ ./ COPY --from=builder --chown=${APP_USER}:${APP_GROUP} /builder/application/ ./ USER ${APP_USER} EXPOSE 8095 5009 ENV JAVA_OPTS="-XX:MaxRAMPercentage=80.0 -XX:+UseG1GC -Djava.security.egd=file:/dev/./urandom -Duser.timezone=Europe/Vienna" ENV SERVER_PORT=8095 ENTRYPOINT ["sh", "-c", "exec java $JAVA_OPTS org.springframework.boot.loader.launch.JarLauncher"]