From 10881c1a8ca2238a0fb01497c2042ebe8601a2b6 Mon Sep 17 00:00:00 2001 From: Felipe Augusto Date: Sat, 28 Mar 2026 17:19:06 -0300 Subject: [PATCH] feat: add Dockerfile and .dockerignore for containerized builds Multi-stage build with eclipse-temurin:21 (JDK for build, JRE for runtime). Includes .dockerignore to optimize build context. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .dockerignore | 10 ++++++++++ Dockerfile | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+) create mode 100644 .dockerignore create mode 100644 Dockerfile 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"]