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 %}