diff --git a/docker/resume/Dockerfile b/docker/resume/Dockerfile index 53c75e3..ab7abce 100644 --- a/docker/resume/Dockerfile +++ b/docker/resume/Dockerfile @@ -1,7 +1,21 @@ FROM caddy:2.7-alpine -# Install dependencies -RUN apk add --no-cache nodejs npm bash +# Install dependencies including Chromium and required libraries for Puppeteer +RUN apk add --no-cache \ + nodejs \ + npm \ + bash \ + chromium \ + nss \ + freetype \ + freetype-dev \ + harfbuzz \ + ca-certificates \ + ttf-freefont + +# Set Puppeteer to use system Chromium +ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true +ENV PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser # Set working directory WORKDIR /srv diff --git a/docker/resume/generate-pdfs.js b/docker/resume/generate-pdfs.js index b97261c..b3acf67 100644 --- a/docker/resume/generate-pdfs.js +++ b/docker/resume/generate-pdfs.js @@ -174,9 +174,20 @@ async function main() { console.log(`Local server started on port ${PORT}\n`); // Launch browser + // Use system Chromium if available (in Docker), otherwise use Puppeteer's bundled Chrome const browser = await puppeteer.launch({ headless: 'new', - args: ['--no-sandbox', '--disable-setuid-sandbox'] + executablePath: process.env.PUPPETEER_EXECUTABLE_PATH || undefined, + args: [ + '--no-sandbox', + '--disable-setuid-sandbox', + '--disable-dev-shm-usage', + '--disable-accelerated-2d-canvas', + '--no-first-run', + '--no-zygote', + '--single-process', + '--disable-gpu' + ] }); try { diff --git a/docker/resume/package.json b/docker/resume/package.json index 759fbf3..09b9d6b 100644 --- a/docker/resume/package.json +++ b/docker/resume/package.json @@ -12,5 +12,8 @@ "description": "", "dependencies": { "puppeteer": "^21.0.0" + }, + "puppeteer": { + "skipChromiumDownload": true } }