diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..e3026c9 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,6 @@ +node_modules/ +reports/ +speedboard.db +*.db-shm +*.db-wal +.git/ diff --git a/Dockerfile b/Dockerfile index 7c7879b..1d74ee6 100644 --- a/Dockerfile +++ b/Dockerfile @@ -26,15 +26,13 @@ RUN SITESPEED_JS=$(find / -name 'sitespeed.js' -path '*/bin/*' 2>/dev/null | hea echo "Build-time sitespeed.js found at: $SITESPEED_JS"; \ echo "export SITESPEED_BIN=$SITESPEED_JS" > /sitespeed_env -# Create persistent directories -RUN mkdir -p /data/reports +# Create the persistent data directories (volume mount points) +RUN mkdir -p /data/reports /data/db -# Symlink reports dir into app folder -RUN ln -sf /data/reports /app/reports - -# Runtime env +# Runtime env — REPORTS_DIR and DB_PATH point to the mounted volumes ENV PORT=3132 \ IN_DOCKER=1 \ + REPORTS_DIR=/data/reports \ NODE_ENV=production EXPOSE 3132 diff --git a/app.js b/app.js index c6f678b..5e9efcb 100644 --- a/app.js +++ b/app.js @@ -27,8 +27,9 @@ app.set('view engine', 'pug'); app.use(express.urlencoded({ extended: true })); app.use(express.json()); -// Static reports -app.use('/reports', express.static(join(__dirname, 'reports'))); +// Static reports — use REPORTS_DIR env var so Docker and local both work +const REPORTS_DIR = process.env.REPORTS_DIR || join(__dirname, 'reports'); +app.use('/reports', express.static(REPORTS_DIR)); // Routes app.use('/', indexRouter); diff --git a/runner.js b/runner.js index af1ad8d..08f3756 100644 --- a/runner.js +++ b/runner.js @@ -5,11 +5,11 @@ import { existsSync } from 'fs'; const __dirname = dirname(fileURLToPath(import.meta.url)); const LOCAL_BIN = join(__dirname, '..', 'sitespeed.io', 'bin', 'sitespeed.js'); - +const REPORTS_DIR = process.env.REPORTS_DIR || join(__dirname, 'reports'); export function runTest(job, onLine) { return new Promise((resolve, reject) => { - const outputFolder = join(__dirname, 'reports', job.id); + const outputFolder = join(REPORTS_DIR, job.id); const isDocker = !!process.env.IN_DOCKER; const sitespeedArgs = [