# syntax=docker/dockerfile:1 FROM node:22-bookworm-slim AS builder WORKDIR /app RUN apt-get update && apt-get install -y --no-install-recommends \ python3 \ make \ g++ \ && rm -rf /var/lib/apt/lists/* RUN corepack enable COPY package.json pnpm-workspace.yaml pnpm-lock.yaml ./ COPY apps/web/package.json apps/web/ COPY apps/api/package.json apps/api/ COPY packages/ui/package.json packages/ui/ COPY packages/shared/package.json packages/shared/ COPY packages/db/package.json packages/db/ RUN pnpm install --frozen-lockfile COPY apps apps COPY packages packages COPY turbo.json ./ COPY VERSION VERSION RUN pnpm turbo build --filter=web --filter=@cfdm/api FROM node:22-bookworm-slim AS runtime RUN apt-get update && apt-get install -y ca-certificates && rm -rf /var/lib/apt/lists/* WORKDIR /app COPY --from=builder /app/node_modules ./node_modules COPY --from=builder /app/apps/api/dist ./apps/api/dist COPY --from=builder /app/apps/api/package.json ./apps/api/package.json COPY --from=builder /app/packages/shared/dist ./packages/shared/dist COPY --from=builder /app/packages/shared/package.json ./packages/shared/package.json COPY --from=builder /app/packages/db/dist ./packages/db/dist COPY --from=builder /app/packages/db/package.json ./packages/db/package.json COPY --from=builder /app/packages/db/migrations ./packages/db/migrations COPY --from=builder /app/apps/web/dist ./static COPY VERSION ./VERSION ENV STATIC_DIR=/app/static ENV DATABASE_URL=sqlite:/data/app.db ENV SERVER_PORT=8080 EXPOSE 8080 VOLUME ["/data"] HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \ CMD node -e "fetch('http://127.0.0.1:8080/health').then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))" CMD ["node", "apps/api/dist/server.js"]