Dockerfile 1.1 KB

123456789101112131415161718192021222324252627282930313233343536
  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. COPY backend/src ./src
  12. RUN rm -rf src/main/resources/static && mkdir -p src/main/resources/static
  13. COPY --from=frontend-build /build/frontend/dist ./src/main/resources/static
  14. RUN mvn -B clean package -DskipTests
  15. FROM eclipse-temurin:17-jre-jammy
  16. WORKDIR /app
  17. COPY docker/entrypoint.sh /app/entrypoint.sh
  18. COPY --from=backend-build /build/backend/target/okr-performance-1.0.0.jar /app/okr-performance.jar
  19. RUN chmod +x /app/entrypoint.sh
  20. ENV APP_DATA_DIR=/app/data \
  21. APP_BACKUP_DIR=/app/data/backups \
  22. SPRING_DATASOURCE_URL=jdbc:sqlite:/app/data/okr-performance.db
  23. EXPOSE 18080
  24. VOLUME ["/app/data"]
  25. HEALTHCHECK --interval=15s --timeout=5s --start-period=30s --retries=5 \
  26. CMD bash -c 'exec 3<>/dev/tcp/127.0.0.1/18080'
  27. ENTRYPOINT ["/app/entrypoint.sh"]
  28. CMD ["java", "-jar", "/app/okr-performance.jar"]