# faza izgradnje Docker slike
# koristimo službenu Maven sliku koja sadrži JDK 17
# AS - postavlja naziv faze izgradnje
FROM maven:3.8.4-openjdk-17 AS build

# WORKDIR - postavlja radni direktorijum unutar kontejnera
WORKDIR /workspace/app

# COPY - kopira kompletan izvorni kod aplikacije u radni direktorijum unutar kontejnera
COPY . .
# RUN - izvršava komandu unutar kontejnera
# u ovom slučaju pokreće Maven build proces koji instalira aplikaciju, 
# ali preskače testove kako bi se ubrzao proces izgradnje Docker slike
RUN mvn install -DskipTests

# faza izvršavanja Docker slike
# koristimo službenu Temurin JRE sliku koja sadrži Java Runtime Environment 17
FROM eclipse-temurin:17-jre-jammy
# COPY --from - kopira artefakt (u ovom slučaju JAR datoteku) iz faze izgradnje u trenutnu fazu izvršavanja
COPY --from=build /workspace/app/target/*.jar app.jar

# ENTRYPOINT - postavlja komandu koja će se izvršiti kada se kontejner pokrene
ENTRYPOINT ["java", "-jar", "app.jar"]

# Rezultat:
    # Finalna Docker slika će sadržavati samo JAR datoteku aplikacije i Java Runtime Environment, 
    # što rezultira manjom i efikasnijom slikom spremnom za pokretanje.