banatie-service/apps/api-service/Dockerfile

43 lines
1.2 KiB
Docker

# Simplified Dockerfile for API Service
FROM node:20-alpine AS builder
WORKDIR /app
# Install pnpm
RUN npm install -g pnpm@10.11.0
# Copy everything needed
COPY pnpm-workspace.yaml package.json pnpm-lock.yaml ./
COPY apps/api-service ./apps/api-service
COPY packages/database ./packages/database
# Install and build
RUN pnpm install --frozen-lockfile
RUN pnpm --filter @banatie/database build
RUN pnpm --filter @banatie/api-service build
# Production runner
FROM node:20-alpine AS production
WORKDIR /app
ENV NODE_ENV=production
RUN addgroup --system --gid 1001 nodejs
RUN adduser --system --uid 1001 apiuser
# Copy built app
COPY --from=builder /app/node_modules ./node_modules
COPY --from=builder /app/packages/database ./packages/database
COPY --from=builder /app/apps/api-service/dist ./apps/api-service/dist
COPY --from=builder /app/apps/api-service/package.json ./apps/api-service/
COPY --from=builder /app/apps/api-service/node_modules ./apps/api-service/node_modules
# Create directories
RUN mkdir -p /app/apps/api-service/logs /app/results /app/uploads/temp
RUN chown -R apiuser:nodejs /app/apps/api-service/logs /app/results /app/uploads
USER apiuser
EXPOSE 3000
WORKDIR /app/apps/api-service
CMD ["node", "dist/server.js"]