кукловод - centos7 - символ не найден - PullRequest
2 голосов
/ 28 сентября 2019

Привет, у меня есть супер простой Dockerfile для запуска puppeteer в Docker:

FROM node:12.2.0-alpine

RUN apk update && apk upgrade && \
  echo @edge http://nl.alpinelinux.org/alpine/edge/community >> /etc/apk/repositories && \
  echo @edge http://nl.alpinelinux.org/alpine/edge/main >> /etc/apk/repositories && \
  apk add --no-cache \
  bash=4.4.19-r1 \
  git=2.20.1-r0 \
  openssh=7.9_p1-r5 \
  chromium@edge \
  nss@edge \
  freetype@edge \
  harfbuzz@edge \
  ttf-freefont@edge \
  sudo=1.8.25_p1-r2

ADD https://github.com/Yelp/dumb-init/releases/download/v1.2.0/dumb-init_1.2.0_amd64 /usr/local/bin/dumb-init
RUN chmod +x /usr/local/bin/dumb-init
ENTRYPOINT ["dumb-init", "--"]

ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD true

WORKDIR /app

COPY package.json .

RUN npm install --quiet -g pm2@^3.5.1 && \
    npm install puppeteer@1.19.0 && \
    npm install --quiet

COPY app.js ./app.js

RUN addgroup -S pptruser && adduser -S -g pptruser pptruser \
  && mkdir -p /home/pptruser/Downloads \
  && chown -R pptruser:pptruser /home/pptruser \
  && chown -R pptruser:pptruser /app

USER pptruser

EXPOSE 1337

CMD [ "pm2-runtime", \
    "start", "app.js", \
    "-i", "max", \
    "--max-memory-restart", "1700M", \
    "--cron", "0 */12 * * *" \
]

Это рабочее решение до сих пор, пока я не запускал yum update на моей хост-машине centos7.Сразу после этого приложение отказывается работать должным образом, генерируя следующую ошибку:

Error: LAUNCH_BROWSER
    at /app/node_modules/async/dist/async.js:171:65
    at processTicksAndRejections (internal/process/task_queues.js:89:5)
Error: Failed to launch chrome!
Error relocating /usr/lib/chromium/chrome: _ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev: symbol not found
Error relocating /usr/lib/chromium/chrome: _ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev: symbol not found
Error relocating /usr/lib/chromium/chrome: _ZNSt19_Sp_make_shared_tag5_S_eqERKSt9type_info: symbol not found

Я пока не нашел решения, чтобы привести его в порядок :-( Любой совет приветствуется.

1 Ответ

2 голосов
/ 28 сентября 2019

В настоящее время существует проблема с последней версией Chromium на alpine.Посмотрите эти две проблемы на github для получения дополнительной информации:

Решение

На данный момент решение проблемы - понизить версию Chromium до версии 72Некоторые пользователи также сообщали, что у них работала версия 73.Вы также можете попробовать (chromium@edge=73.0.3683.103-r0).

Помимо понижения уровня Chromium, вам также необходимо понизить версию кукловода до соответствующей версии.Для Chromium 72 вам нужно использовать версию 1.11.0.(подробнее о , как определить версию Chrome для использования с puppeteer )

Измененный файл Docker:

RUN apk update && apk upgrade && \
  ...
  chromium@edge=72.0.3626.121-r0 \
...

RUN ...
    npm install puppeteer@1.11.0 && \
...