diff options
| author | Arne Rief <riearn@proton.me> | 2026-01-10 22:33:36 +0100 |
|---|---|---|
| committer | Arne Rief <riearn@proton.me> | 2026-01-10 22:33:36 +0100 |
| commit | a28e6fbcbfc8feccdcba200c2421f5c42a78d97a (patch) | |
| tree | f35c6be871ca421ee67f3b615f50d640071aa9d5 /backend/Dockerfile | |
| parent | e836e7dd4ed5e9fa60e949d159100040b22a8f48 (diff) | |
Docker
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 |
