-
-
Notifications
You must be signed in to change notification settings - Fork 12
Expand file tree
/
Copy pathDockerfile
More file actions
55 lines (40 loc) · 1.41 KB
/
Copy pathDockerfile
File metadata and controls
55 lines (40 loc) · 1.41 KB
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
FROM gradle:8.13-jdk21 AS builder
WORKDIR /octi-server
# Copy Gradle wrapper files first for better caching
COPY gradlew ./
COPY gradlew.bat ./
COPY gradle/ ./gradle/
# Convert line endings and make gradlew executable (fixes Windows CRLF issues)
RUN sed -i 's/\r$//' ./gradlew && chmod +x ./gradlew
# Copy build files for dependency resolution
COPY build.gradle.kts ./
COPY settings.gradle.kts ./
COPY gradle.properties ./
# Download dependencies (cached layer)
RUN ./gradlew dependencies --no-daemon
# Copy source code
COPY src/ ./src/
# Build the application
RUN ./gradlew clean installDist --no-daemon
FROM eclipse-temurin:21-jre
WORKDIR /octi-server
# Create non-root user for security (let system assign UID)
RUN useradd -r -s /bin/bash -m octi-user
# Copy built application
COPY --from=builder /octi-server/build/install/octi-server/ .
# Copy entrypoint script
COPY docker-entrypoint.sh .
# Create data directories and set permissions
RUN mkdir -p /etc/octi-server /etc/octi-sync-server && \
sed -i 's/\r$//' ./docker-entrypoint.sh && \
chown -R octi-user:octi-user /octi-server /etc/octi-server /etc/octi-sync-server && \
chmod +x ./bin/octi-server && \
chmod +x ./docker-entrypoint.sh
# Switch to non-root user
USER octi-user
# Expose the application port
EXPOSE 8080
# Declare volume for data persistence
VOLUME ["/etc/octi-server"]
# Use the entrypoint script
ENTRYPOINT ["./docker-entrypoint.sh"]