Skip to content

Commit 5ac9aa1

Browse files
authored
Merge pull request #4 from NiXTheDev/main
Another Dockerfile update 😄
2 parents dd3d532 + 6f28195 commit 5ac9aa1

2 files changed

Lines changed: 83 additions & 10 deletions

File tree

Dockerfile

Lines changed: 49 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,56 @@
11
FROM gradle:latest AS builder
2-
# ^ 2 Critical & 4 High vulnerabilities, as per Docker DX (14.08.2025)
3-
ADD https://github.com/d4rken/octi-sync-server-kotlin.git /octi-sync-server
2+
# ^ 2 Critical & 4 High vulnerabilities (14.08.2025)
43
WORKDIR /octi-sync-server
5-
RUN ./gradlew clean installDist
64

7-
FROM openjdk:26-jdk
8-
RUN microdnf install findutils -y
5+
# Copy Gradle wrapper files first for better caching
6+
COPY gradlew ./
7+
COPY gradlew.bat ./
8+
COPY gradle/ ./gradle/
9+
10+
# Convert line endings and make gradlew executable (fixes Windows CRLF issues)
11+
RUN sed -i 's/\r$//' ./gradlew && chmod +x ./gradlew
12+
13+
# Copy build files for dependency resolution
14+
COPY build.gradle.kts ./
15+
COPY settings.gradle.kts ./
16+
COPY gradle.properties ./
17+
18+
# Download dependencies (cached layer)
19+
RUN ./gradlew dependencies --no-daemon
20+
21+
# Copy source code
22+
COPY src/ ./src/
23+
24+
# Build the application
25+
RUN ./gradlew clean installDist --no-daemon
26+
27+
FROM eclipse-temurin:24-jre
928
WORKDIR /octi-sync-server
29+
30+
# Create non-root user for security (let system assign UID)
31+
RUN useradd -r -s /bin/bash -m octi-user
32+
33+
# Copy built application
1034
COPY --from=builder /octi-sync-server/build/install/octi-sync-server-kotlin/ .
1135

12-
# Set default environment variables
13-
ENV OCTI_DATAPATH=/etc/octi-sync-server
14-
ENV OCTI_PORT=8080
36+
# Copy entrypoint script
37+
COPY docker-entrypoint.sh .
38+
39+
# Create data directory and set permissions
40+
RUN mkdir -p /etc/octi-sync-server && \
41+
sed -i 's/\r$//' ./docker-entrypoint.sh && \
42+
chown -R octi-user:octi-user /octi-sync-server /etc/octi-sync-server && \
43+
chmod +x ./bin/octi-sync-server-kotlin && \
44+
chmod +x ./docker-entrypoint.sh
45+
46+
# Switch to non-root user
47+
USER octi-user
48+
49+
# Expose the application port
50+
EXPOSE 8080
51+
52+
# Declare volume for data persistence
53+
VOLUME ["/etc/octi-sync-server"]
1554

16-
# Use JSON array format for entrypoint with shell to handle env vars
17-
ENTRYPOINT ["sh", "-c", "./bin/octi-sync-server-kotlin --datapath=${OCTI_DATAPATH} --port=${OCTI_PORT}"]
55+
# Use the entrypoint script
56+
ENTRYPOINT ["./docker-entrypoint.sh"]

docker-entrypoint.sh

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
#!/bin/bash
2+
#
3+
# Octi Sync Server Entrypoint Script
4+
#
5+
# Environment variables:
6+
# - OCTI_PORT: Server port (default: 8080)
7+
# - OCTI_DEBUG: Enable debug mode (default: false)
8+
#
9+
# Fixed configuration:
10+
# - Data Path: /etc/octi-sync-server
11+
#
12+
13+
set -e
14+
15+
# Process environment variables
16+
OCTI_PORT=${OCTI_PORT:-8080}
17+
OCTI_DEBUG=${OCTI_DEBUG:-false}
18+
19+
# Validate port
20+
if ! [[ "$OCTI_PORT" =~ ^[0-9]+$ ]] || [ "$OCTI_PORT" -lt 1 ] || [ "$OCTI_PORT" -gt 65535 ]; then
21+
echo "Error: Invalid port number. Must be between 1-65535"
22+
exit 1
23+
fi
24+
25+
# Build command arguments
26+
CMD_ARGS="--datapath=/etc/octi-sync-server --port=$OCTI_PORT"
27+
28+
# Add debug flag if enabled
29+
if [ "$OCTI_DEBUG" = "true" ]; then
30+
CMD_ARGS="$CMD_ARGS --debug"
31+
fi
32+
33+
# Execute the application
34+
exec ./bin/octi-sync-server-kotlin $CMD_ARGS

0 commit comments

Comments
 (0)