美文网首页
puppeteer 在 docker 中应用出现的问题

puppeteer 在 docker 中应用出现的问题

作者: 心情后花园 | 来源:发表于2020-04-09 17:39 被阅读0次

    由于项目是通过 docker 部署且服务器系统为 ubuntu,且后续项目中需要使用到 puppeteer 这个库,但在后续的使用过程中出现了一些问题,记录一下。但由于解决了,且没有记录下更多的错误信息,只是从搜索引擎中查找搜索记录,找出大致的错误信息

    1. Error: Failed to launch the browser process

    出现这个问题,是由于 puppeteer 所依赖的 Chromium 缺少所需要的依赖项。于是首先去官网找解决答案。

    puppeteer.png

    点击进去之后,刚好目录中能看到对应的在 docker 中的问题,传送门

    troubleshooting.png

    因为我们已经使用了镜像,且 docker 是通过 root 用户启动的,所以就只是复制了以下的这段放到 Dockerfile 中

    # Install latest chrome dev package and fonts to support major charsets (Chinese, Japanese, Arabic, Hebrew, Thai and a few others)
    # Note: this installs the necessary libs to make the bundled version of Chromium that Puppeteer
    # installs, work.
    RUN apt-get update \
        && apt-get install -y wget gnupg \
        && wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - \
        && sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' \
        && apt-get update \
        && apt-get install -y google-chrome-unstable fonts-ipafont-gothic fonts-wqy-zenhei fonts-thai-tlwg fonts-kacst fonts-freefont-ttf \
          --no-install-recommends \
        && rm -rf /var/lib/apt/lists/*
    

    但在执行过程中,下载安装耗时太长了,没执行成功(可能是因为下载字体的原因)。于是切换到了文档中提到的一个 demo 文件

    demo.png

    以下是它的完整代码,我也是只取了其中的第二个 RUN 的代码,放到服务器上执行,然后可以成功执行了

    FROM node:10
    
    RUN apt-get update && \
        apt-get -y install xvfb gconf-service libasound2 libatk1.0-0 libc6 libcairo2 libcups2 \
          libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 \
          libgtk-3-0 libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 \
          libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 \
          libxtst6 ca-certificates fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils wget && \
        rm -rf /var/lib/apt/lists/*
    
    # Add user so we don't need --no-sandbox.
    RUN groupadd -r pptruser && useradd -r -g pptruser -G audio,video pptruser \
        && mkdir -p /home/pptruser/Downloads \
        && chown -R pptruser:pptruser /home/pptruser
    
    # Run everything after as non-privileged user.
    USER pptruser
    
    1. unable to open x display

    出现这个错误,只需要把 headless 设置成 true 就可以了

    1. 字体不显示

    为了解决第一个问题,采用的 demo 里面的方法,这个里面不包含字体之类的,所以又自己去折腾了,注意改 source-sans-pro.zip 这个名称

    字体下载路径

    # 注意改 source-sans-pro.zip
    COPY source-sans-pro.zip /tmp
    RUN sed -i 's/deb.debian.org/mirrors.163.com/g' /etc/apt/sources.list && \
        apt update && \
        apt-get install -y dpkg wget unzip
        #fonts-droid fonts-arphic-ukai fonts-arphic-uming
    RUN cd /tmp && wget http://ftp.cn.debian.org/debian/pool/main/f/fonts-noto-cjk/fonts-noto-cjk_20170601+repack1-3+deb10u1_all.deb && \
        dpkg -i fonts-noto-cjk_20170601+repack1-3+deb10u1_all.deb && \
        unzip source-sans-pro.zip && cd source-sans-pro  && mv ./OTF /usr/share/fonts/  && \
        fc-cache -f -v
    

    完整版

    # 设置 puppeteer 的字体
    COPY source-sans-pro.zip /tmp
    RUN sed -i 's/deb.debian.org/mirrors.163.com/g' /etc/apt/sources.list && \
        apt update && \
        apt-get install -y dpkg wget unzip
        #fonts-droid fonts-arphic-ukai fonts-arphic-uming
    RUN cd /tmp && wget http://ftp.cn.debian.org/debian/pool/main/f/fonts-noto-cjk/fonts-noto-cjk_20170601+repack1-3+deb10u1_all.deb && \
        dpkg -i fonts-noto-cjk_20170601+repack1-3+deb10u1_all.deb && \
        unzip source-sans-pro.zip && cd source-sans-pro  && mv ./OTF /usr/share/fonts/  && \
        fc-cache -f -v
    # 2. https://github.com/puppeteer/puppeteer/blob/master/.ci/node10/Dockerfile.linux
    RUN apt-get update && \
        apt-get -y install xvfb gconf-service libasound2 libatk1.0-0 libc6 libcairo2 libcups2 \
          libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 \
          libgtk-3-0 libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 \
          libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 \
          libxtst6 ca-certificates fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils wget && \
        rm -rf /var/lib/apt/lists/*
    

    相关文章

      网友评论

          本文标题:puppeteer 在 docker 中应用出现的问题

          本文链接:https://www.haomeiwen.com/subject/pgacmhtx.html