Dockerfile 932 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. # ============ Stage 1: Maven Build ============
  2. FROM maven:3.9-eclipse-temurin-21 AS builder
  3. WORKDIR /build
  4. COPY pom.xml .
  5. RUN mvn dependency:go-offline -B
  6. COPY src ./src
  7. RUN mvn clean package -DskipTests -B
  8. # ============ Stage 2: Runtime ============
  9. FROM eclipse-temurin:21-jre
  10. LABEL maintainer="chenyu"
  11. ENV TZ=Asia/Shanghai
  12. ENV JAVA_OPTS="-XX:MaxRAMPercentage=75.0 \
  13. -XX:+UseContainerSupport \
  14. -XX:+HeapDumpOnOutOfMemoryError \
  15. -XX:HeapDumpPath=/app/logs/heapdump.hprof"
  16. RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone \
  17. && apt-get update \
  18. && apt-get install -y --no-install-recommends ffmpeg \
  19. && rm -rf /var/lib/apt/lists/*
  20. WORKDIR /app
  21. RUN mkdir -p /app/logs \
  22. && chown -R 1000:1000 /app
  23. COPY --from=builder /build/target/*.jar /app/app.jar
  24. RUN chown 1000:1000 /app/app.jar
  25. USER 1000
  26. EXPOSE 8080 8090
  27. ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -jar app.jar"]