# Build stage FROM oven/bun:1 AS builder WORKDIR /app # Install dependencies COPY package.json bun.lock* ./ RUN bun install --frozen-lockfile # Copy source files COPY src ./src COPY public ./public COPY tsconfig.json ./ # Build CLI binary (smallest possible) RUN mkdir -p dist/bin && \ bun build --compile --minify --sourcemap=none --target=bun-linux-x64 \ src/cli.ts --outfile dist/bin/clarc # Runtime stage - for running the server FROM oven/bun:1-slim WORKDIR /app # Copy only what's needed for server COPY --from=builder /app/node_modules ./node_modules COPY --from=builder /app/src ./src COPY --from=builder /app/public ./public COPY --from=builder /app/package.json ./ # Copy CLI binary for extraction if needed COPY --from=builder /app/dist/bin/clarc /app/dist/bin/ # Create data directory RUN mkdir -p data/prod ENV PORT=7200 ENV DB_PATH=/app/data/prod/clarc.db EXPOSE 7200 CMD ["bun", "run", "src/server.ts"]