Files
cmc/support-portal-backend/Dockerfile
2025-10-10 18:31:57 +05:30

48 lines
1.1 KiB
Docker

# =======================
# Builder stage
# =======================
FROM maven:3.8.5-eclipse-temurin-17 AS builder
WORKDIR /workdir/server
# Copy only pom.xml first for better layer caching
COPY pom.xml .
# Download dependencies with optimization flags
RUN mvn dependency:resolve dependency:resolve-plugins -B -T 1C
# Copy source code
COPY src ./src
# Build the application
RUN mvn package -B -T 1C -DskipTests -Dmaven.javadoc.skip=true
# Verify the JAR was created and rename it to a consistent name
RUN ls -la target/ && \
mv target/*.jar target/app.jar
# =======================
# Runtime stage
# =======================
FROM eclipse-temurin:17-jre-focal
# Expose port
EXPOSE 8080
# Create app and uploads directories
RUN mkdir -p /app && \
mkdir -p /app/uploads && \
chmod 755 /app/uploads
# Set working directory
WORKDIR /app
# Copy the JAR with a consistent name
COPY --from=builder /workdir/server/target/app.jar /app/app.jar
# Create volume for uploads
VOLUME ["/app/uploads"]
# Use exec form of ENTRYPOINT (not shell form) for proper signal handling
# and environment variable passing
ENTRYPOINT ["java", "-jar", "/app/app.jar"]