# ---- build stage ---- FROM node:20-alpine AS builder WORKDIR /app COPY package*.json ./ RUN npm ci COPY . . RUN npm run build # ---- production stage ---- FROM node:20-alpine WORKDIR /app # Install openssl for corporate CA certificate handling (TRUEREF-0019) RUN apk add --no-cache openssl git # Install all deps (includes tsx for the MCP server and drizzle-kit for migrations) COPY package*.json ./ RUN npm ci # Built SvelteKit app (adapter-node output) COPY --from=builder /app/build ./build # MCP server source COPY --from=builder /app/src/mcp ./src/mcp # Drizzle migrations COPY --from=builder /app/drizzle.config.ts ./drizzle.config.ts COPY --from=builder /app/src/lib/server/db/migrations ./src/lib/server/db/migrations COPY --from=builder /app/tsconfig.json ./tsconfig.json # Persistent volume for the SQLite database RUN mkdir -p /data VOLUME ["/data"] ENV DATABASE_URL=/data/trueref.db ENV HOST=0.0.0.0 ENV PORT=3000 ENV TRUEREF_API_URL=http://localhost:3000 EXPOSE 3000 3001 COPY docker-entrypoint.sh /docker-entrypoint.sh RUN chmod +x /docker-entrypoint.sh ENTRYPOINT ["/docker-entrypoint.sh"] CMD ["web"]