first commit
This commit is contained in:
51
backend/Dockerfile
Normal file
51
backend/Dockerfile
Normal file
@@ -0,0 +1,51 @@
|
||||
# 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"]
|
||||
Reference in New Issue
Block a user