Запуск безглавого браузера Chromium выдает ошибку «Не удалось прочитать DnsConfig» (внутри контейнера Docker) - PullRequest
0 голосов
/ 23 февраля 2019

Моя цель:
Для запуска модульных тестов в моем приложении Angular 6 (которое запускается внутри контейнера Docker) с использованием Karma / Jasmine.Для запуска этих тестов мне нужен веб-браузер.Таким образом, казалось, что Chromium без головы был хорошим вариантом.Я установил его вместе с кучей других библиотек через мой Dockerfile, но запуск моих тестов внутри контейнера Docker завершился неудачно (запуск тестов вне его работает нормально).

Ошибка:

23 02 2019 04:28:08.884:ERROR [launcher]: ChromiumHeadless stdout: 
23 02 2019 04:28:08.884:ERROR [launcher]: ChromiumHeadless stderr: [0223/042808.557529:WARNING:dns_config_service_posix.cc(326)] Failed to read DnsConfig.
[0223/042808.591436:FATAL:udev_loader.cc(38)] Check failed: false.

Фактически открытие браузера (http://localhost:9876/) и последующее выполнение тестов по-прежнему приводят к сбою в автономном режиме, но тесты отображаются в браузере. Приятно видеть тесты, но не слишком полезно, если я хочу, чтобы эти модульные тесты в конечном итоге выполнялись как часть CI или что-то в этом роде.

Я предполагаю, что на самом деле мне может не понадобиться работающий DNS (он говорит WARNING из вывода stderr), но я не уверен, как его отключить.

Вот текущая конфигурация браузера в тестере Karma:

browsers: ['ChromeHeadlessCustom'],
customLaunchers: {
  ChromeHeadlessCustom: {
    base: 'ChromiumHeadless',
    flags: [
      '--no-sandbox',
      '--allow-insecure-localhost',
      '--homepage=about:blank',
      '--no-first-run',
      '--headless',
      '--disable-software-rasterizer',
      '--disable-gpu',
      '--disable-translate',
      '--disable-extensions',
      '--disable-setuid-sandbox',
      '--remote-debugging-port=9876'
    ]
  }
}

Единственные значимые флагибыли бы флаги headless и no-sandbox, все остальное, что я добавил при просмотре других постов и, похоже, не оказало никакого влияния.

Dockerfile (где я думаю, что я устанавливаюChromium успешно):

FROM node:8-alpine

# Install Google Chrome to run Angular unit tests
ENV CHROME_BIN="/usr/bin/chromium-browser"
ENV LIGHTHOUSE_CHROMIUM_PATH /usr/bin/chromium-browser

RUN \
  echo "http://dl-cdn.alpinelinux.org/alpine/edge/community" >> /etc/apk/repositories \
  && echo "http://dl-cdn.alpinelinux.org/alpine/edge/main" >> /etc/apk/repositories \
  && echo "http://dl-cdn.alpinelinux.org/alpine/edge/testing" >> /etc/apk/repositories \
  && apk --no-cache  update \
  && apk --no-cache  upgrade \
  && apk add --no-cache --virtual .build-deps gifsicle pngquant optipng libjpeg-turbo-utils udev ttf-opensans chromium
  && rm -rf /var/cache/apk/* /tmp/* /usr/include

Так что, если у кого-нибудь есть какие-либо предложения о том, куда идти дальше, или если я пропустил какой-то другой очевидный простой способ выполнения этих тестов, это будет оценено!

1 Ответ

0 голосов
/ 01 июля 2019

У меня была такая же проблема, и я не смог ее локализовать.Но, как я выяснил, пакеты instang, как в этот Dockerfile , создают рабочее изображение без этой ошибки.

Это устраняет проблему, но не раскрывает ее причину.

...