diff --git a/Dockerfile b/Dockerfile index 59fe648..d04e001 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,11 +1,12 @@ -# Stage 1: Dependencies -FROM node:20-alpine AS deps + +# Stage 1: Dependencies (Ubuntu base) +FROM node:20-bookworm AS deps WORKDIR /app COPY package.json package-lock.json ./ RUN npm ci # Stage 2: Build -FROM node:20-alpine AS builder +FROM node:20-bookworm AS builder WORKDIR /app COPY --from=deps /app/node_modules ./node_modules COPY . . @@ -23,16 +24,23 @@ RUN npx prisma generate RUN npm run build -# Stage 3: Runner -FROM node:20-alpine AS runner +# Stage 3: Runner (Ubuntu base) +FROM node:20-bookworm AS runner WORKDIR /app ENV NODE_ENV=production -# GDAL/ogr2ogr for GeoPackage export, -# ghostscript+qpdf for extreme PDF compression (direct, not via Stirling) -# Note: libredwg not available in Alpine repos — DWG→DXF disabled in Docker -RUN apk add --no-cache gdal gdal-tools ghostscript qpdf +# Install dependencies for all features +# - gdal/ogr2ogr for GeoPackage export +# - ghostscript+qpdf for extreme PDF compression +# - libredwg for DWG→DXF conversion +RUN apt-get update && \ + apt-get install -y --no-install-recommends \ + gdal-bin ghostscript qpdf build-essential git ca-certificates libredwg-tools && \ + rm -rf /var/lib/apt/lists/* + +# Note: DWG→DXF conversion now enabled via libredwg (dwg2dxf) +# If libredwg-tools is missing, manual build from source may be required RUN addgroup --system --gid 1001 nodejs RUN adduser --system --uid 1001 nextjs