# syntax=docker/dockerfile:1 FROM node:20-bookworm-slim AS frontend-build WORKDIR /build/frontend COPY frontend/package.json frontend/package-lock.json ./ RUN npm ci COPY frontend/ ./ RUN npm run build FROM maven:3.9.9-eclipse-temurin-17 AS backend-build WORKDIR /build/backend COPY backend/pom.xml ./ COPY backend/src ./src RUN rm -rf src/main/resources/static && mkdir -p src/main/resources/static COPY --from=frontend-build /build/frontend/dist ./src/main/resources/static RUN mvn -B clean package -DskipTests FROM eclipse-temurin:17-jre-jammy WORKDIR /app COPY docker/entrypoint.sh /app/entrypoint.sh COPY --from=backend-build /build/backend/target/okr-performance-1.0.0.jar /app/okr-performance.jar RUN chmod +x /app/entrypoint.sh ENV APP_DATA_DIR=/app/data \ APP_BACKUP_DIR=/app/data/backups \ SPRING_DATASOURCE_URL=jdbc:sqlite:/app/data/okr-performance.db EXPOSE 18080 VOLUME ["/app/data"] HEALTHCHECK --interval=15s --timeout=5s --start-period=30s --retries=5 \ CMD bash -c 'exec 3<>/dev/tcp/127.0.0.1/18080' ENTRYPOINT ["/app/entrypoint.sh"] CMD ["java", "-jar", "/app/okr-performance.jar"]