|
|
@@ -0,0 +1,41 @@
|
|
|
+# 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 ./
|
|
|
+RUN mvn -B dependency:go-offline
|
|
|
+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
|
|
|
+
|
|
|
+RUN apt-get update \
|
|
|
+ && apt-get install -y --no-install-recommends curl \
|
|
|
+ && rm -rf /var/lib/apt/lists/*
|
|
|
+
|
|
|
+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 curl --fail --silent http://127.0.0.1:18080/ >/dev/null || exit 1
|
|
|
+
|
|
|
+ENTRYPOINT ["/app/entrypoint.sh"]
|
|
|
+CMD ["java", "-jar", "/app/okr-performance.jar"]
|