diff --git a/Dockerfile b/Dockerfile index 48a1a15..7f1b829 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,21 +1,35 @@ -FROM node:20-alpine AS builder +FROM node:20-slim AS deps WORKDIR /app -COPY package.json package-lock.json ./ -RUN npm ci +# Copy package files +COPY package.json package-lock.json* ./ +# Install production dependencies only +RUN npm ci --omit=dev --legacy-peer-deps --ignore-scripts + +FROM node:20-slim AS builder +WORKDIR /app + +# Copy package files +COPY package.json package-lock.json* ./ + +# Install all dependencies (including dev) +RUN HUSKY=0 npm ci --legacy-peer-deps + +# Copy sources and build COPY tsconfig.json ./ COPY src ./src COPY README.md ./README.md RUN npm run build -FROM node:20-alpine AS runner +FROM node:20-slim AS runner ENV NODE_ENV=production WORKDIR /app -COPY package.json package-lock.json ./ -RUN npm ci --omit=dev --ignore-scripts +# Copy production node_modules and built app +COPY --from=deps /app/node_modules ./node_modules COPY --from=builder /app/dist ./dist +COPY --from=builder /app/package.json ./ ENV HOST=0.0.0.0 \ PORT=3000 @@ -23,5 +37,3 @@ ENV HOST=0.0.0.0 \ EXPOSE 3000 CMD ["node", "dist/index.js", "--http"] - -