From 4bc42d59ab342f0be5adde1f722f71e69d10ea50 Mon Sep 17 00:00:00 2001 From: Iain Sproat <68657+iainsproat@users.noreply.github.com> Date: Tue, 2 Jul 2024 10:39:19 +0100 Subject: [PATCH] feat(preview-service): allow chromium exec path & puppeteer user data dir to be configured (#2462) --- packages/preview-service/.env.example | 9 +++++++++ packages/preview-service/routes/preview.js | 9 +++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) create mode 100644 packages/preview-service/.env.example diff --git a/packages/preview-service/.env.example b/packages/preview-service/.env.example new file mode 100644 index 000000000..92f100614 --- /dev/null +++ b/packages/preview-service/.env.example @@ -0,0 +1,9 @@ +PREVIEWS_HEADED='true' +CHROMIUM_EXECUTABLE_PATH='/usr/bin/google-chrome-stable' +USER_DATA_DIR='/tmp/puppeteer' +PG_CONNECTION_STRING='postgres://speckle:speckle@127.0.0.1/speckle' +POSTGRES_MAX_CONNECTIONS_PREVIEW_SERVICE='2' +PROMETHEUS_METRICS_PORT='9094' +PORT='3001' +LOG_LEVEL='info' +LOG_PRETTY='true' diff --git a/packages/preview-service/routes/preview.js b/packages/preview-service/routes/preview.js index c910641a0..ddff02851 100644 --- a/packages/preview-service/routes/preview.js +++ b/packages/preview-service/routes/preview.js @@ -9,6 +9,10 @@ const { reduce } = require('lodash') const shouldBeHeadless = process.env.PREVIEWS_HEADED !== 'true' +const getChromiumExecutablePath = () => + process.env.CHROMIUM_EXECUTABLE_PATH || '/usr/bin/google-chrome-stable' +const getPuppeteerUserDataDir = () => process.env.USER_DATA_DIR || '/tmp/puppeteer' + async function pageFunction(objectUrl) { waitForAnimation = async (ms = 70) => await new Promise((resolve) => { @@ -60,8 +64,9 @@ async function pageFunction(objectUrl) { async function getScreenshot(objectUrl, boundLogger = logger) { const launchParams = { headless: shouldBeHeadless, - userDataDir: '/tmp/puppeteer', - executablePath: '/usr/bin/google-chrome-stable', + userDataDir: getPuppeteerUserDataDir(), + executablePath: getChromiumExecutablePath(), + protocolTimeout: 3600_000, // we trust the web content that is running, so can disable the sandbox // disabling the sandbox allows us to run the docker image without linux kernel privileges args: ['--no-sandbox', '--disable-setuid-sandbox', '--disable-dev-shm-usage']