Files
demoapp/Dockerfile
davidtio 9f0ecf67da fix: revert uid=1000 pin — compose sets user: "0" instead
In rootless Docker, uid=0 in-container = cldrzd on host (not privileged).
Pinning to uid=1000 in-container mapped to host uid=100999 (phantom UID),
which cannot write to the cldrzd-owned data directory.

The Dockerfile USER directive is overridden by compose user: "0" anyway,
so revert to a standard non-root app user without explicit uid/gid.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-28 19:05:19 +08:00

35 lines
1.1 KiB
Docker

# === Build stage ===
FROM eclipse-temurin:25-jdk AS build
RUN apt-get update && apt-get install -y curl gnupg && \
curl -sL "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x2EE0EA64E40A89B84B2DF73499E82A75642AC823" | gpg --dearmor > /etc/apt/trusted.gpg.d/sbt.gpg && \
echo "deb https://repo.scala-sbt.org/scalasbt/debian all main" > /etc/apt/sources.list.d/sbt.list && \
apt-get update && apt-get install -y sbt && \
rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY build.sbt .
COPY project/*.sbt project/*.properties project/*.scala project/
RUN sbt update
COPY src/ src/
RUN sbt "set test in assembly := false" assembly
# === Runtime stage ===
FROM eclipse-temurin:25-jre-alpine
RUN addgroup -S app && adduser -S app -G app
RUN mkdir -p /data && chown app:app /data
WORKDIR /app
COPY --from=build --chown=app:app /app/target/scala-3.7.1/demoapp.jar ./demoapp.jar
USER app
EXPOSE 8080
ENV PORT=8080
ENV JAVA_OPTS="-XX:MaxRAMPercentage=75.0 -XX:+UseContainerSupport -XX:+ExitOnOutOfMemoryError"
ENTRYPOINT ["sh", "-c", "exec java $JAVA_OPTS -jar demoapp.jar"]