Spaces:
Sleeping
Sleeping
| FROM node:20-bullseye-slim | |
| # Create app directory and set ownership to the existing 'node' user (UID 1000) | |
| RUN mkdir -p /app && chown node:node /app | |
| WORKDIR /app | |
| # Switch to the non-root user | |
| USER node | |
| # Copy package files with correct ownership | |
| COPY --chown=node:node frontend/package.json ./frontend/package.json | |
| COPY --chown=node:node backend/package.json backend/package-lock.json ./backend/ | |
| RUN npm --prefix frontend install --no-audit --no-fund && npm --prefix backend ci | |
| # Copy source code with correct ownership | |
| COPY --chown=node:node frontend ./frontend | |
| COPY --chown=node:node backend ./backend | |
| # Create uploads directory so backend can serve static files | |
| RUN mkdir -p backend/uploads | |
| RUN npm --prefix frontend run build && npm --prefix backend run build | |
| ENV NODE_ENV=production | |
| ENV SPACE_PORT=7860 | |
| ENV BACKEND_INTERNAL_URL=http://127.0.0.1:3001 | |
| EXPOSE 7860 | |
| CMD ["sh", "-c", "PORT=3001 npm --prefix backend run start:prod & npm --prefix frontend run start -- -H 0.0.0.0 -p ${SPACE_PORT}"] | |