Dockerfile 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. # syntax=docker/dockerfile:1
  2. FROM node:20-bookworm-slim AS frontend-build
  3. WORKDIR /build/frontend
  4. COPY frontend/package.json frontend/package-lock.json ./
  5. RUN npm ci
  6. COPY frontend/ ./
  7. RUN npm run build
  8. FROM maven:3.9.9-eclipse-temurin-17 AS backend-build
  9. WORKDIR /build/backend
  10. COPY backend/pom.xml ./
  11. RUN mvn -B dependency:go-offline
  12. COPY backend/src ./src
  13. RUN rm -rf src/main/resources/static && mkdir -p src/main/resources/static
  14. COPY --from=frontend-build /build/frontend/dist ./src/main/resources/static
  15. RUN mvn -B clean package -DskipTests
  16. FROM eclipse-temurin:17-jre-jammy
  17. WORKDIR /app
  18. RUN apt-get update \
  19. && apt-get install -y --no-install-recommends curl \
  20. && rm -rf /var/lib/apt/lists/*
  21. COPY docker/entrypoint.sh /app/entrypoint.sh
  22. COPY --from=backend-build /build/backend/target/okr-performance-1.0.0.jar /app/okr-performance.jar
  23. RUN chmod +x /app/entrypoint.sh
  24. ENV APP_DATA_DIR=/app/data \
  25. APP_BACKUP_DIR=/app/data/backups \
  26. SPRING_DATASOURCE_URL=jdbc:sqlite:/app/data/okr-performance.db
  27. EXPOSE 18080
  28. VOLUME ["/app/data"]
  29. HEALTHCHECK --interval=15s --timeout=5s --start-period=30s --retries=5 \
  30. CMD curl --fail --silent http://127.0.0.1:18080/ >/dev/null || exit 1
  31. ENTRYPOINT ["/app/entrypoint.sh"]
  32. CMD ["java", "-jar", "/app/okr-performance.jar"]