33 lines
932 B
Docker
33 lines
932 B
Docker
FROM node:22.14.0-alpine AS web-build
|
|
|
|
WORKDIR /build/web
|
|
COPY web/package.json web/package-lock.json ./
|
|
RUN npm ci
|
|
COPY web/ ./
|
|
RUN npm run build -- --mode production
|
|
|
|
FROM hseeberger/scala-sbt:17.0.2_1.6.2_2.13.8 AS scala-build
|
|
|
|
WORKDIR /build
|
|
COPY build.sbt ./
|
|
COPY project/ ./project/
|
|
COPY src/ ./src/
|
|
RUN sbt clean assembly
|
|
|
|
FROM amazoncorretto:17-alpine
|
|
|
|
RUN addgroup -S weather && adduser -S -G weather weather
|
|
WORKDIR /app
|
|
RUN mkdir -p /app/data/tmp /app/data/grids /app/web/dist && chown -R weather:weather /app
|
|
|
|
COPY --from=scala-build --chown=weather:weather /build/target/scala-2.13/app.jar /app/app.jar
|
|
COPY --from=web-build --chown=weather:weather /build/web/dist/ /app/web/dist/
|
|
|
|
USER weather
|
|
EXPOSE 8080
|
|
|
|
HEALTHCHECK --interval=30s --timeout=5s --start-period=40s --retries=3 \
|
|
CMD wget -q -O /dev/null http://127.0.0.1:8080/ || exit 1
|
|
|
|
CMD ["java", "-Xms128m", "-Xmx512m", "-XX:+UseG1GC", "-jar", "/app/app.jar"]
|