# syntax=docker/dockerfile:1 FROM maven:3-eclipse-temurin-23-alpine AS dependency WORKDIR /app COPY pom.xml ./ COPY domain/pom.xml domain/ COPY domain/spi/pom.xml domain/spi/ COPY domain/api/pom.xml domain/api/ COPY domain/service/pom.xml domain/service/ COPY domain/data/pom.xml domain/data/ COPY application/pom.xml application/ COPY infrastructure/pom.xml infrastructure/ COPY bootstrap/pom.xml bootstrap/ COPY common/pom.xml common/ ARG XPEDITIS_PROFILE RUN mvn -P${XPEDITIS_PROFILE} dependency:go-offline \ && mvn dependency:get -Dartifact=net.bytebuddy:byte-buddy-agent:1.15.11 -B \ && mvn dependency:get -Dartifact=org.mapstruct:mapstruct-processor:1.6.3 -B \ && mvn dependency:get -Dartifact=org.projectlombok:lombok-mapstruct-binding:0.2.0 -B \ && mvn dependency:get -Dartifact=com.mysql:mysql-connector-j:9.1.0 -B \ && mvn dependency:get -Dartifact=org.flywaydb:flyway-core:10.20.1 -B \ && mvn dependency:get -Dartifact=org.flywaydb:flyway-mysql:10.20.1 -B FROM dependency AS builder COPY domain/spi/src domain/spi/src COPY domain/api/src domain/api/src COPY domain/service/src domain/service/src COPY domain/data/src domain/data/src COPY application/src application/src COPY infrastructure/src infrastructure/src COPY bootstrap/src bootstrap/src COPY common/src common/src ARG XPEDITIS_PROFILE RUN mvn -o clean package -P${XPEDITIS_PROFILE} -Dmaven.test.skip=true -DskipTests #FROM builder AS test #RUN mvn -o clean test FROM eclipse-temurin:23-jdk-alpine AS production WORKDIR /opt/app EXPOSE 8080 COPY --from=builder /app/bootstrap/target/bootstrap*.jar xpeditis.jar COPY wait-for-it.sh ./ RUN chmod +x wait-for-it.sh COPY entrypoint.sh ./ RUN chmod +x entrypoint.sh ENTRYPOINT ["./entrypoint.sh"] #CMD ["java", "-jar", "-Dserver.port=8080", "leblr.jar"] #HEALTHCHECK --interval=30s --timeout=30s --start-period=5s --retries=3 CMD [ "curl", "--fail", "http://localhost:8080/actuator/health", "|| exit 1" ]