diff --git a/Dockerfile b/Dockerfile index e441035..c51321e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,12 +1,25 @@ +# ---- Build stage ---------------------------------------------------------- +FROM node:20-alpine AS builder + +WORKDIR /app + +COPY package*.json tsconfig.json ./ +RUN npm install --no-audit --no-fund + +COPY src/ ./src/ +RUN npm run build + +# ---- Runtime stage -------------------------------------------------------- FROM node:20-alpine WORKDIR /app -# Install production dependencies +# Install only production dependencies COPY package*.json ./ -RUN npm install --omit=dev && npm cache clean --force +RUN npm install --omit=dev --no-audit --no-fund && npm cache clean --force -# Copy application code +# Copy compiled output and entry point +COPY --from=builder /app/dist ./dist COPY server.js ./ # Run as non-root user for security