Add multi-stage Dockerfile, docker-compose, and fix insert conflict

Rebuild Dockerfile with 3 stages (CSS, uberjar, runtime) on port 3030.
Add docker-compose.yml loading .env. Fix insert-price! ON CONFLICT to
target (time_dk, price_area) matching the actual unique index.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-15 12:44:50 +01:00
co-authored by Claude Opus 4.6
parent 4984c1b207
commit 14b583ccb9
3 changed files with 29 additions and 14 deletions
+20 -13
View File
@@ -1,15 +1,22 @@
# syntax = docker/dockerfile:1.2
FROM clojure:openjdk-17 AS build
FROM node:22-alpine AS css
WORKDIR /app
COPY package.json package-lock.json ./
RUN npm ci
COPY resources/css resources/css
COPY src src
RUN npx @tailwindcss/cli -i resources/css/input.css -o resources/public/css/output.css --minify
WORKDIR /
COPY . /
FROM clojure:temurin-21-tools-deps-alpine AS build
WORKDIR /app
COPY deps.edn build.clj ./
RUN clojure -P && clojure -P -T:build
COPY . .
COPY --from=css /app/resources/public/css/output.css resources/public/css/output.css
RUN clojure -T:build all
RUN clj -Sforce -T:build all
FROM azul/zulu-openjdk-alpine:17
COPY --from=build /target/elprice-standalone.jar /elprice/elprice-standalone.jar
EXPOSE $PORT
ENTRYPOINT exec java $JAVA_OPTS -jar /elprice/elprice-standalone.jar
FROM eclipse-temurin:21-jre-alpine
WORKDIR /app
COPY --from=build /app/target/elprice-standalone.jar app.jar
EXPOSE 3030
ENV PORT=3030
ENTRYPOINT ["java", "-jar", "app.jar"]