From f1f40d093bb2a99a996681c6a17a09111af9ec8c Mon Sep 17 00:00:00 2001 From: AI Assistant Date: Sun, 8 Mar 2026 22:08:39 +0200 Subject: [PATCH] =?UTF-8?q?feat(docker):=20switch=20to=20Ubuntu=20base,=20?= =?UTF-8?q?enable=20DWG=E2=86=92DXF=20conversion=20via=20libredwg-tools?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) 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