kodelyx-backend / Dockerfile
kodelyx's picture
Install openssl package in Alpine stages for Prisma engine compatibility
59b6b25
Raw
History Blame Contribute Delete
1.06 kB
# Base image
FROM node:20-alpine AS builder
RUN apk add --no-cache openssl
WORKDIR /app
COPY package*.json ./
COPY prisma ./prisma/
RUN npm ci
COPY . .
RUN npm run prisma:generate
RUN npm run build
# Production image - fully compliant with Hugging Face Spaces security
FROM node:20-alpine AS runner
RUN apk add --no-cache openssl
WORKDIR /app
# Copy built files and set permissions for node user (UID 1000)
COPY --from=builder --chown=node:node /app/package*.json ./
COPY --from=builder --chown=node:node /app/node_modules ./node_modules
COPY --from=builder --chown=node:node /app/dist ./dist
COPY --from=builder --chown=node:node /app/prisma ./prisma
# Create data directory for SQLite database with proper owner permissions
RUN mkdir -p /app/data && chown -R node:node /app/data
# Run as non-root user (required by Hugging Face Spaces)
USER node
# Hugging Face Spaces expects the container to run on port 7860
ENV PORT=7860
EXPOSE 7860
# Run migrations and start the server
CMD ["sh", "-c", "npx prisma migrate deploy && node dist/main.js"]