Files
Project-Management-V2/backend/Dockerfile
Your NamebaishaliHolocron b9ac5ae0b2 first commit
2026-06-15 12:57:03 +05:30

52 lines
1.4 KiB
Docker

# Stage 1: Build
FROM maven:3.9-eclipse-temurin-21 AS builder
WORKDIR /build
# Copy the parent pom and all module poms first for better layer caching
COPY backend/pom.xml ./pom.xml
COPY backend/projectmanagement-client/pom.xml projectmanagement-client/
COPY backend/projectmanagement-server/pom.xml projectmanagement-server/
RUN mvn dependency:go-offline -B
# Copy the entire backend source code
COPY backend/ .
# 4. Build the application
RUN mvn -pl projectmanagement-server -am clean package \
-DskipTests -Dmaven.javadoc.skip=true
# =======================
# Runtime Image
# =======================
FROM eclipse-temurin:21-jre-alpine
WORKDIR /app
# Create user and group
RUN addgroup -S spring && adduser -S spring -G spring
# Copy the built JAR from builder stage
COPY --from=builder /build/projectmanagement-server/target/*.jar app.jar
# Create directories and set permissions
RUN mkdir -p /app/logs /app/bpmn && \
chown -R spring:spring /app/logs /app
# Copy BPMN files
# NOTE: This expects a 'bpmn' folder in your project root
COPY --chown=spring:spring bpmn/ /app/bpmn/
USER spring
EXPOSE 8071
# Environment setup
ENV IKON_ACCESSMANAGEMENT_INIT_FILE=/app/bpmn/project.json
ENV IKON_PROCESSENGINE_BPMN_PATH=/app/bpmn
ENV JAVA_OPTS="-XX:+UseContainerSupport -XX:MaxRAMPercentage=75.0"
# Run the application
ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -jar app.jar"]