diff options
Diffstat (limited to 'backend/Dockerfile')
| -rw-r--r-- | backend/Dockerfile | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/backend/Dockerfile b/backend/Dockerfile new file mode 100644 index 0000000..47a96e6 --- /dev/null +++ b/backend/Dockerfile @@ -0,0 +1,43 @@ +# syntax=docker/dockerfile:1 + +# BUILD STAGE +FROM node:22-alpine AS builder + +WORKDIR /app + +COPY package*.json ./ + +# Install all dependencies, dev dependencies needed for build +RUN npm ci + +COPY . . + +# Build TypeScript +RUN npm run build + +# PRODUCTION STAGE +FROM node:22-alpine AS production + +WORKDIR /app + +COPY package*.json ./ + +# Install only production dependencies +RUN npm ci --omit=dev + +# Copy .env.docker to .env to silence Docker warning +COPY .env.docker .env + +# Copy compiled code from builder stage +COPY --from=builder /app/dist ./dist + +# Create non-root user for security +RUN addgroup -g 1001 -S nodejs && \ + adduser -S nodejs -u 1001 && \ + chown -R nodejs:nodejs /app + +USER nodejs + +EXPOSE 3000 + +CMD ["npm", "start"]
\ No newline at end of file |
