diff --git a/apps/edr-freight-api/Dockerfile b/apps/edr-freight-api/Dockerfile index 124016e07..984e622db 100644 --- a/apps/edr-freight-api/Dockerfile +++ b/apps/edr-freight-api/Dockerfile @@ -7,9 +7,6 @@ RUN apk add --no-cache libc6-compat # `--mount=type=cache,target=/pnpm/store` cache actually persists deps across builds. ENV PNPM_HOME="/pnpm" ENV PATH="$PNPM_HOME:$PATH" -# Puppeteer ships a glibc Chrome that cannot run on Alpine; skip the ~150MB -# download at install time. The runner stage installs Alpine's system Chromium. -ENV PUPPETEER_SKIP_DOWNLOAD=true RUN corepack enable WORKDIR /app @@ -35,23 +32,8 @@ RUN --mount=type=cache,id=pnpm,target=/pnpm/store \ pnpm deploy --filter="@edr/freight-api" --prod --legacy /deploy FROM node:24.15.0-alpine AS runner -# Chromium + fonts for Puppeteer PDF rendering (contract/invoice/receipt docs). -# Without these, Puppeteer fails to launch and the code degrades to an -# unformatted plain-text PDF fallback. Use Alpine's system Chromium (musl-built); -# the glibc Chrome that `puppeteer install` downloads cannot run on Alpine. -RUN apk add --no-cache \ - libc6-compat \ - chromium \ - nss \ - freetype \ - harfbuzz \ - ca-certificates \ - ttf-freefont \ - font-noto-cjk +RUN apk add --no-cache libc6-compat ENV NODE_ENV=production -# Point Puppeteer at the system Chromium and skip its bundled download. -ENV PUPPETEER_SKIP_DOWNLOAD=true -ENV PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser WORKDIR /app RUN addgroup --system --gid 1001 nodejs \ && adduser --system --uid 1001 --ingroup nodejs nestjs @@ -61,3 +43,4 @@ EXPOSE 3001 # GT06 GPS tracker TCP listener (raw TCP, not HTTP). Change via GT06_TCP_PORT. EXPOSE 5023 CMD ["node", "dist/main.js"] +