Spaces:
Sleeping
Sleeping
File size: 1,707 Bytes
2df0cf9 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 | {% if config.multiStage %}
# Multi-stage build for Java
FROM maven:{{ config.javaVersion or '17' }}-alpine AS builder
WORKDIR /app
# Copy pom.xml
COPY pom.xml .
# Download dependencies
RUN mvn dependency:go-offline
# Copy source code
COPY src ./src
# Build application
RUN mvn clean package -DskipTests
# Production stage - JRE only for smaller image
FROM openjdk:{{ config.javaVersion or '17' }}-jre-alpine
WORKDIR /app
# Install dumb-init for proper signal handling
RUN apk add --no-cache dumb-init
# Copy JAR from builder
COPY --from=builder /app/target/*.jar app.jar
# Create non-root user
RUN addgroup -g 1001 -S java && \
adduser -S java -u 1001 && \
chown -R java:java /app
USER java
# Expose port
EXPOSE {{ config.port or '8080' }}
# Production mode
ENV SPRING_PROFILES_ACTIVE=prod
# Start application
CMD ["java", "-jar", "app.jar"]
{% else %}
# Java {{ config.javaVersion or '17' }} Dockerfile
FROM openjdk:{{ config.javaVersion or '17' }}-jdk-alpine
WORKDIR /app
# Install Maven
RUN apk add --no-cache maven
# Copy pom.xml
COPY pom.xml .
# Download dependencies
RUN mvn dependency:go-offline
# Copy source code
COPY src ./src
{% if not config.developmentMode %}
# Build application
RUN mvn clean package -DskipTests
{% endif %}
# Create non-root user
RUN addgroup -g 1001 -S java && \
adduser -S java -u 1001 && \
chown -R java:java /app
USER java
# Expose port
EXPOSE {{ config.port or '8080' }}
{% if config.developmentMode %}
# Development mode
ENV SPRING_PROFILES_ACTIVE=dev
CMD ["mvn", "spring-boot:run"]
{% else %}
# Production mode
ENV SPRING_PROFILES_ACTIVE=prod
# Start application
CMD ["java", "-jar", "target/*.jar"]
{% endif %}
{% endif %}
|