diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..4e7374d --- /dev/null +++ b/.dockerignore @@ -0,0 +1,10 @@ +.git +.github +target/ +*.md +.gitignore +.idea/ +*.iml +.vscode/ +.DS_Store +docker-compose*.yml diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..a3b9807 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,37 @@ +# Stage 1 - Build +FROM eclipse-temurin:21-jdk-alpine AS build + +WORKDIR /app + +COPY mvnw . +COPY .mvn .mvn +COPY pom.xml . + +RUN chmod +x mvnw && ./mvnw dependency:go-offline -B + +COPY src src + +RUN ./mvnw clean package -DskipTests -B + +# Stage 2 - Runtime +FROM eclipse-temurin:21-jre-alpine AS runtime + +LABEL maintainer="felipementel" \ + description="CRUD de usuarios em Spring Boot com Ports and Adapters" + +RUN addgroup -S appgroup && adduser -S appuser -G appgroup + +WORKDIR /app + +COPY --from=build /app/target/usuarios-api-java-0.1.0.jar app.jar + +RUN chown appuser:appgroup app.jar + +USER appuser + +EXPOSE 8080 + +HEALTHCHECK --interval=30s --timeout=5s --start-period=30s --retries=3 \ + CMD wget --no-verbose --tries=1 --spider http://localhost:8080/actuator/health || exit 1 + +ENTRYPOINT ["java", "-jar", "app.jar"]