Kraft102's picture
Update backend source
34367da verified
# WidgeTDC Backend - Simple Dockerfile for HuggingFace Spaces
FROM node:20-alpine
# Install dependencies for native modules and Prisma
RUN apk add --no-cache python3 make g++ git openssl openssl-dev
WORKDIR /app
# Copy all package files
COPY package*.json ./
COPY packages/domain-types/package*.json ./packages/domain-types/
COPY packages/mcp-types/package*.json ./packages/mcp-types/
# Install dependencies
RUN npm install
# Copy source code
COPY packages/ ./packages/
COPY src/ ./src/
COPY prisma/ ./prisma/
COPY tsconfig.json ./
# Build shared packages
RUN cd packages/domain-types && npm run build
RUN cd packages/mcp-types && npm run build
# Generate Prisma client
RUN npx prisma generate || true
# Build backend with esbuild (bypasses TypeScript strict checking)
RUN npx esbuild src/index.ts --bundle --platform=node --target=node20 \
--outfile=dist/index.js \
--external:@prisma/client \
--external:better-sqlite3 \
--external:pg-native \
--external:@xenova/transformers \
--external:onnxruntime-node \
--external:sharp \
--external:canvas \
--format=cjs \
--log-level=warning
# Create data directories
RUN mkdir -p /app/data/dropzone /app/data/vidensarkiv /app/data/agents /app/data/harvested
# Set permissions for non-root user
RUN chown -R 1000:1000 /app
USER 1000
# Environment
ENV NODE_ENV=production
ENV PORT=7860
ENV DOCKER=true
ENV HF_SPACE=true
EXPOSE 7860
# Health check
HEALTHCHECK --interval=30s --timeout=10s --start-period=60s --retries=3 \
CMD node -e "require('http').get('http://localhost:7860/health', (r) => process.exit(r.statusCode === 200 ? 0 : 1))"
CMD ["node", "dist/index.js"]