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
- Docker Desktop på Windows eller macOS
- Docker Engine på Linux
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
- GitHub Actions för automatisering
- Konfiguration för anpassning