FROM oven/bun:1-alpine@sha256:629e17411f1f129dbec3af78d5af9c9f2a937435c80349437206c6b0b7422373 AS deps

ENV TERM=xterm-256color
ENV COLORTERM=truecolor
ENV BUN_INSTALL_CACHE_DIR=/bun-cache

WORKDIR /app

COPY package.json bun.lock* ./

RUN --mount=type=cache,target=/bun-cache bun install --frozen-lockfile


FROM deps AS builder

COPY . .

RUN bun --bun svelte-kit sync
RUN bun run build


FROM oven/bun:1-alpine@sha256:629e17411f1f129dbec3af78d5af9c9f2a937435c80349437206c6b0b7422373 AS runtime

ENV NODE_ENV=production

WORKDIR /app

COPY --from=builder /app/build ./build
COPY --from=builder /app/serve.ts ./serve.ts

EXPOSE 3000

ENTRYPOINT ["bun"]
CMD ["run", "serve.ts"]
