# Faza 1: Build Spring Boot aplikacije pomoću Mavena
# 'build' je naziv faze
FROM maven:3.8.4-openjdk-17 AS build 

# Postavljanje radnog direktorijuma unutar kontejnera
WORKDIR /workspace/app/

# Kopiranje svih lokalnih datoteka u radni direktorijum unutar kontejnera
COPY . .

# Izvršavanje Maven komande za instalaciju zavisnosti (dependencies) i kompajliranje aplikacije, preskačući testove
RUN mvn install -DskipTests

# Kreiranje direktorijuma za zavisnosti i raspakivanje JAR datoteke aplikacije
RUN mkdir -p target/dependency && (cd target/dependency; jar -xf ../*.jar)

# Faza 2: Kreiranje slike sa kompajliranim artefaktima aplikacije
# 'final' je naziv faze
FROM openjdk:17-jdk-slim as final

# Postavljanje radnog direktorijuma unutar kontejnera
WORKDIR /workspace/app

# Kopiranje JAR datoteke aplikacije iz faze 1 u radni direktorijum faze 2
COPY --from=build workspace/app/target/*.jar app.jar

# Definisanje ulazne tačke za pokretanje aplikacije
# 'java' je komanda, '-jar' i 'app.jar' su parametri te komande
ENTRYPOINT ["java", "-jar", "app.jar"]
