diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..fb10925 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,11 @@ +# Prevent local build artifacts from leaking into Docker +target/ +data/ +*.db + +# IDE +.idea/ +.vscode/ + +# OS +.DS_Store diff --git a/src/main/docker/Dockerfile.jvm b/src/main/docker/Dockerfile.jvm index a0c09ab..c04c628 100644 --- a/src/main/docker/Dockerfile.jvm +++ b/src/main/docker/Dockerfile.jvm @@ -1,9 +1,24 @@ +# DiscDrop — Quarkus multi-stage build + +# ─── 1. Build ───────────────────────────────────── +FROM maven:3-eclipse-temurin-21-alpine AS build +WORKDIR /build +COPY pom.xml ./ +RUN mvn dependency:go-offline -q 2>/dev/null || true +COPY src ./src +RUN mvn package -q -DskipTests + +# ─── 2. Runtime ─────────────────────────────────── FROM eclipse-temurin:21-jre-alpine WORKDIR /app RUN apk add --no-cache sqlite -COPY target/quarkus-app/ /app/ +COPY --from=build /build/target/quarkus-app/ /app/ EXPOSE 8080 + +VOLUME /app/data + ENV DISC_DROP_DB_PATH=/app/data/discdrop.db ENV DISC_DROP_CACHE_TTL=8 ENV DISC_DROP_BASE_URL=http://localhost:8080 -ENTRYPOINT ["java", "-jar", "/app/quarkus-run.jar"] + +ENTRYPOINT ["java", "-XX:MinHeapFreeRatio=10", "-XX:MaxHeapFreeRatio=20", "-jar", "/app/quarkus-run.jar"]