# ============================================================ # wm-patrol 巡检服务 Dockerfile (Multi-stage) # Build: docker build -t water/wm-patrol -f Dockerfile.patrol . # ============================================================ # ---------- Stage 1: Build ---------- FROM maven:3.9-eclipse-temurin-17 AS builder WORKDIR /build # Copy parent POM and module POMs (dependency caching) COPY pom.xml ./ COPY wm-common/pom.xml wm-common/ COPY wm-patrol/pom.xml wm-patrol/ RUN mvn dependency:go-offline -pl wm-patrol -am -B 2>/dev/null || true # Copy source COPY wm-common/ wm-common/ COPY wm-patrol/ wm-patrol/ # Build RUN mvn clean package -pl wm-patrol -am -DskipTests -B # ---------- Stage 2: Runtime ---------- FROM eclipse-temurin:17-jre-alpine LABEL maintainer="water-management-team" LABEL description="智慧水务管理系统 - 巡检服务" RUN apk add --no-cache curl tzdata \ && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \ && echo "Asia/Shanghai" > /etc/timezone WORKDIR /app COPY --from=builder /build/wm-patrol/target/wm-patrol-*.jar app.jar EXPOSE 8087 HEALTHCHECK --interval=30s --timeout=10s --start-period=60s --retries=3 \ CMD curl -sf http://localhost:8087/actuator/health || exit 1 ENTRYPOINT ["java", "-Xms256m", "-Xmx512m", "-Djava.security.egd=file:/dev/./urandom", "-jar", "app.jar"]