Gå till innehållet

Installation med Docker

Docker ger en isolerad och reproducerbar miljö där Python, Node, webbläsare och alla testverktyg redan är installerade. Det är den enklaste vägen på en server.

Imagen bygger på Sitespeed.io:s officiella image.

Förutsättningar

Mac med Apple Silicon

Aktivera "Use Rosetta for x86/amd64 emulation" i Docker Desktops inställningar. Sitespeed.io beskriver varför.

Snabbstart

docker run -it --rm \
  --shm-size=4g \
  -e MAX_OLD_SPACE_SIZE=3000 \
  webperfse/webperf-core:latest \
  python default.py -u https://example.com -t 22 -r

Flaggorna

Flagga Förklaring
-it Interaktivt läge med terminal
--rm Ta bort containern när körningen är klar
--shm-size=4g Delat minne åt Chrome och Firefox
-e MAX_OLD_SPACE_SIZE=3000 Node.js heap-storlek i MB

Samma värden (--shm-size=4g -e MAX_OLD_SPACE_SIZE=3000) används när projektet självt regressionstestar imagen, så de är en beprövad utgångspunkt.

Interaktivt läge

Starta en container och kör flera kommandon i den:

docker run -it --rm \
  --shm-size=4g \
  -e MAX_OLD_SPACE_SIZE=3000 \
  webperfse/webperf-core:latest \
  bash

Väl inne:

python default.py --dependency
python default.py -u https://webperf.se -t 22 -r

Spara resultat på värdmaskinen

Montera en mapp och skriv rapporten dit:

mkdir -p rapporter

docker run -it --rm \
  --shm-size=4g \
  -e MAX_OLD_SPACE_SIZE=3000 \
  -v "$(pwd)/rapporter:/usr/src/runner/output" \
  webperfse/webperf-core:latest \
  python default.py -u https://example.com -t 22 -o output/rapport.json

Egen image med egna filer

Har du en egen settings.json eller sites.json är det bekvämt att baka in dem. Skapa en Dockerfile:

FROM webperfse/webperf-core:latest

COPY settings.json /usr/src/runner/settings.json
COPY sites.json /usr/src/runner/sites.json

Bygg och kör:

docker build -t min-webperf:latest .

docker run -it --rm \
  --shm-size=4g \
  -e MAX_OLD_SPACE_SIZE=3000 \
  min-webperf:latest \
  python default.py -i sites.json -t 22

Fördelen med att lägga sina egna filer i ett eget repo är att du kan uppdatera bastaggen utan att behöva applicera om dina ändringar.

IP2Location behövs för GDPR-betygen

Bygger du imagen från källkod bör du också skaffa en egen kopia av data/IP2LOCATION-LITE-DB1.IPV6.BIN. Utan den kan de GDPR-relaterade delarna av betygen inte räknas ut.

Bygga från källkod

git clone https://github.com/Webperf-se/webperf_core.git
cd webperf_core
docker build -t webperf-local:latest .

Räkna med att det tar en stund. I mappen docker/ finns färdiga PowerShell-skript för bygge och för körning med monterad mapp.

Resurser

Parameter Rekommendation Förklaring
--shm-size 4g Delat minne åt webbläsarna
--cpus 0.9 Begränsar hur mycket CPU containern får ta
MAX_OLD_SPACE_SIZE 3000 Node.js minne i MB

Håll ordning på minnesvärdena

MAX_OLD_SPACE_SIZE anges i MB och ska vara lägre än --shm-size. Sätter du dem tvärtom får du svårtolkade krascher mitt i en körning.

Felsökning

Lighthouse misslyckas med NO_NAVSTART

Ett känt problem med Chrome i Docker. Öka --shm-size, kör om, eller byt webbläsare:

--setting tests.sitespeed.browser=firefox
Containern startar inte

Kontrollera att Docker körs och har tillräckligt med minne tilldelat i inställningarna.

Resultatet sparas inte

Se till att den monterade mappen finns och är skrivbar, och att sökvägen du anger med -o pekar in i den.

Skript för återkommande körningar

#!/bin/bash
URL=${1:-"https://example.com"}
TESTS=${2:-"22"}

docker run -it --rm \
  --shm-size=4g \
  -e MAX_OLD_SPACE_SIZE=3000 \
  webperfse/webperf-core:latest \
  python default.py -u "$URL" -t "$TESTS" -r
chmod +x kor-test.sh
./kor-test.sh "https://example.com" "22,9"
param(
    [Parameter(Mandatory=$true)]
    [string]$Url,
    [string]$Tests = "22"
)

docker run -it --rm `
  --shm-size=4g `
  -e MAX_OLD_SPACE_SIZE=3000 `
  webperfse/webperf-core:latest `
  python default.py -u $Url -t $Tests -r
.\kor-test.ps1 -Url "https://example.com" -Tests "22,9"

Nästa steg