mabemi/onellmWeb
0
1## Multi-stage build for Spring Boot (Java 17)2 3FROM maven:3.9.6-eclipse-temurin-17 AS build4 5WORKDIR /app6 7# Cache dependencies first8COPY pom.xml ./9RUN mvn -q -DskipTests dependency:go-offline10 11# Build12COPY src ./src13RUN mvn -q -DskipTests package \14 && JAR_FILE=$(ls -1 target/*.jar | grep -vE '(sources|javadoc|original)\\.jar$' | head -n 1) \15 && test -n "$JAR_FILE" \16 && cp "$JAR_FILE" /app/app.jar17 18 19FROM eclipse-temurin:17-jre-jammy AS runtime20 21WORKDIR /app22 23# Install curl for health check pings24RUN apt-get update && apt-get install -y --no-install-recommends curl && rm -rf /var/lib/apt/lists/*25 26RUN addgroup --system app && adduser --system --ingroup app app27 28COPY --from=build /app/app.jar /app/app.jar29 30# Create keep-alive script that pings health endpoint every 15 minutes31RUN echo '#!/bin/sh\n\32echo "Starting keep-alive ping service..."\n\33sleep 60\n\34while true; do\n\35 curl -s http://localhost:7680/api/health > /dev/null 2>&1 && echo "[$(date)] Keep-alive ping successful" || echo "[$(date)] Keep-alive ping failed"\n\36 sleep 900\n\37done' > /app/keepalive.sh && chmod +x /app/keepalive.sh38 39USER app40 41ENV JAVA_OPTS=""42EXPOSE 768043 44# Start keep-alive in background, then run Java app in foreground45CMD ["sh", "-c", "/app/keepalive.sh & java $JAVA_OPTS -jar /app/app.jar"]46 