Spaces:
Runtime error
Runtime error
| # Use an official Node.js runtime as a parent image | |
| FROM node:20-alpine AS builder | |
| # Create app directory and set permissions | |
| RUN mkdir -p /app /app/logs && \ | |
| chown -R node:node /app | |
| # Set working directory | |
| WORKDIR /app | |
| # Copy package files first for better caching | |
| COPY --chown=node:node package*.json ./ | |
| COPY --chown=node:node ./apps/apigateway/package*.json ./apps/apigateway/ | |
| COPY --chown=node:node ./libs/proto ./libs/proto | |
| # Switch to non-root user | |
| USER node | |
| # Install dependencies | |
| RUN npm ci | |
| # Copy the rest of the app's source code | |
| COPY --chown=node:node . . | |
| # Build the NestJS app | |
| RUN npm run build:apigateway | |
| # Create production image | |
| FROM node:20-alpine | |
| # Create app directory and set permissions | |
| RUN mkdir -p /app /app/logs && \ | |
| chown -R node:node /app | |
| WORKDIR /app | |
| # Copy built files from builder | |
| COPY --from=builder --chown=node:node /app/dist ./dist | |
| COPY --from=builder --chown=node:node /app/libs/proto ./libs/proto | |
| COPY --from=builder --chown=node:node /app/package*.json ./ | |
| COPY --from=builder --chown=node:node /app/node_modules ./node_modules | |
| # Switch to non-root user | |
| USER node | |
| # Expose app port | |
| EXPOSE 8080 | |
| # Start the application | |
| CMD ["node", "dist/apps/apigateway/main.js"] | |