48 lines
1.2 KiB
Docker
48 lines
1.2 KiB
Docker
FROM eclipse-temurin:25-jdk-alpine AS build
|
|
RUN apk add --no-cache maven
|
|
WORKDIR /app
|
|
|
|
# Copy pom.xml and download dependencies (for caching)
|
|
COPY pom.xml .
|
|
RUN mvn dependency:go-offline
|
|
|
|
# Copy source and templates
|
|
COPY src ./src
|
|
|
|
# Build and run tests with overridden properties
|
|
ARG PUZZLE_ROWS=8
|
|
ARG PUZZLE_COLS=9
|
|
RUN mvn clean test package -DPUZZLE_ROWS=${PUZZLE_ROWS} -DPUZZLE_COLS=${PUZZLE_COLS}
|
|
|
|
FROM eclipse-temurin:25-jdk-alpine
|
|
|
|
RUN apk add --no-cache curl tzdata
|
|
|
|
# Install supercronic for cron scheduling
|
|
RUN curl -fsSL -o /usr/local/bin/supercronic \
|
|
https://github.com/aptible/supercronic/releases/download/v0.2.30/supercronic-linux-amd64 \
|
|
&& chmod +x /usr/local/bin/supercronic
|
|
|
|
WORKDIR /app
|
|
|
|
# Copy the built jar and other necessary files from the build stage
|
|
COPY --from=build /app/target/tools-all.jar /app/target/tools-all.jar
|
|
COPY nl_score_hints.csv /app/nl_score_hints.csv
|
|
COPY docker-entrypoint.sh /app/docker-entrypoint.sh
|
|
COPY crontab /app/crontab
|
|
|
|
# Create output directory
|
|
RUN mkdir -p /data/puzzles
|
|
|
|
ENV TZ=Europe/Amsterdam
|
|
ENV OUT_DIR=/data/puzzles
|
|
ENV PUZZLES_PER_DAY=3
|
|
ENV THEME_FILTER=true
|
|
ENV THEME_MIN_SCORE=0.6
|
|
|
|
VOLUME ["/data"]
|
|
|
|
RUN chmod +x /app/docker-entrypoint.sh
|
|
|
|
ENTRYPOINT ["/app/docker-entrypoint.sh"]
|