39 lines
935 B
Docker
39 lines
935 B
Docker
# 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"]
|