Для использования Lighthouse в изолированной среде удобно применять Docker-контейнеры. Основное преимущество такого подхода — возможность запускать аудиты в стандартизированной среде, без зависимости от локальных установок Node.js или браузеров.
Базовый Dockerfile для запуска Lighthouse может выглядеть следующим образом:
FROM node:20-bullseye-slim
# Установка необходимых пакетов
RUN apt-get update && \
apt-get install -y curl gnupg && \
rm -rf /var/lib/apt/lists/*
# Установка Chrome для Headless режима
RUN apt-get update && apt-get install -y \
chromium \
chromium-driver \
--no-install-recommends && \
rm -rf /var/lib/apt/lists/*
# Установка Lighthouse глобально
RUN npm install -g lighthouse
# Задание рабочей директории
WORKDIR /app
# Копирование скриптов или конфигураций (если есть)
COPY . /app
# Команда по умолчанию
ENTRYPOINT ["lighthouse"]
В этом Dockerfile ключевым моментом является установка Headless Chromium, так как Lighthouse требует браузер для проведения аудита. Node.js версии 20 совместим с последними версиями Lighthouse.
Для запуска аудита страницы можно использовать следующую команду:
docker build -t lighthouse .
docker run --rm -v $(pwd)/reports:/app/reports lighthouse https://example.com --output html --output-path /app/reports/report.html
Пояснения:
-v $(pwd)/reports:/app/reports монтирует локальную
папку reports в контейнер, чтобы сохранять результаты
аудита на хост-машине.--output html и --output-path определяют
формат и путь для отчета.--rm удаляет контейнер после завершения
работы.Lighthouse позволяет использовать JSON-конфигурацию для кастомизации аудитов. В Docker-контейнере можно подключить конфигурационный файл через монтирование:
docker run --rm -v $(pwd)/reports:/app/reports -v $(pwd)/lighthouse-config.js:/app/lighthouse-config.js lighthouse \
https://example.com --config-path /app/lighthouse-config.js --output html --output-path /app/reports/custom-report.html
Пример структуры конфигурационного файла
lighthouse-config.js:
module.exports = {
extends: 'lighthouse:default',
settings: {
onlyCategories: ['performance', 'accessibility'],
emulatedFormFactor: 'desktop'
}
};
Ключевые параметры:
onlyCategories — ограничение аудитов определенными
категориями.emulatedFormFactor — эмуляция устройства
(mobile, desktop).При запуске Lighthouse в Docker важно учитывать потребление ресурсов:
--memory и --cpus.--chrome-flags="--no-sandbox" при
запуске в окружениях с ограниченными правами.Для интеграции в CI/CD процессы удобно запускать Lighthouse через Docker и сохранять результаты в формате JSON:
docker run --rm -v $(pwd)/reports:/app/reports lighthouse https://example.com \
--output json --output-path /app/reports/report.json
JSON-отчет легко обрабатывать с помощью скриптов, формируя сводные
метрики для нескольких страниц. Для этого можно использовать Node.js и
модуль fs для чтения и агрегации данных.
const fs = require('fs');
const reports = ['report1.json', 'report2.json'];
let totalScore = 0;
reports.forEach(file => {
const data = JSON.parse(fs.readFileSync(`./reports/${file}`, 'utf-8'));
totalScore += data.categories.performance.score;
});
console.log(`Средний показатель производительности: ${(totalScore / reports.length) * 100}%`);
Такой подход позволяет масштабировать аудиты для больших проектов, сохраняя отчеты в едином формате для анализа.
Для поддержания актуальной версии Lighthouse в Docker:
npm install -g lighthouse@latest.Это гарантирует корректное проведение аудитов и использование последних улучшений производительности и категорий проверки.
Контейнеризация Lighthouse обеспечивает стабильность, предсказуемость и воспроизводимость аудитов, что особенно важно при интеграции в CI/CD и анализе большого количества страниц. Использование Docker позволяет полностью изолировать среду выполнения, управлять зависимостями и легко масштабировать процесс аудита.