unreal-chat/apps/api/Dockerfile
Juan Sebastian Montoya 18582c1fdc chore: add Keyv package for improved caching and key-value storage
- Added Keyv package (v5.3.1) to package.json for flexible key-value storage
- Updated package-lock.json with Keyv and related dependencies
- Simplified Dockerfile dependency management
- Removed unnecessary buffer and readable-stream package duplicates
2025-03-10 09:10:17 -05:00

39 lines
1.1 KiB
Docker

FROM node:22-alpine AS base
# Rebuild the source code only when needed
FROM base AS builder
WORKDIR /app
COPY . .
# Install dependencies
RUN npm install
# Build the project
RUN cd apps/api && npm run prisma:generate
RUN npx turbo run build --filter=api
FROM base AS dependencies
WORKDIR /app
COPY --from=builder /app/package.json ./package.json
COPY --from=builder /app/package-lock.json ./package-lock.json
COPY --from=builder /app/apps/api/package.json ./apps/api/package.json
COPY --from=builder /app/apps/api/prisma ./apps/api/prisma
ARG NODE_ENV=production
RUN npm ci
RUN cd apps/api && npm run prisma:generate
RUN wget -O - https://gobinaries.com/tj/node-prune | sh
RUN node-prune /app/node_modules
# Copy the built project
FROM base AS runner
WORKDIR /app
COPY --from=dependencies /app/node_modules ./node_modules
COPY --from=dependencies /app/package.json ./package.json
COPY --from=dependencies /app/package-lock.json ./package-lock.json
COPY --from=dependencies /app/apps/api/package.json ./apps/api/package.json
COPY --from=builder /app/apps/api/dist ./apps/api/dist
WORKDIR /app/apps/api
EXPOSE 4000
# Start the server
ENTRYPOINT [ "npm", "run", "start" ]