美文网首页docker的教程
在docker中远程调用phantomJS,中文乱码问题解决

在docker中远程调用phantomJS,中文乱码问题解决

作者: 大师兄爱上芭蕉扇 | 来源:发表于2019-04-16 18:37 被阅读34次

    背景:写了一个爬虫程序使用的docker部署,部署后在docker中安装PhantomJS 比较麻烦,于是想到了再另一个docker容器中部署一个PhantomJS ,通过远程调用的方式来使用它,部署完后发现部分网站phantomjs截图出现乱码,见下图:

    phantomjs截图出现乱码.png

    部署命令

    docker run -d --restart=always --name phantomjs  -p 8910:8910 wernight/phantomjs phantomjs --webdriver=8910
    
    

    出现上述情况的原因是: wernight/phantomjs 镜像缺少必要的词库,解决方案如下:
    1、先安装fonts字库
    2、添加windows字库,把windows字库复制到当前目录
    3、重新打phantomjs image镜像

    1、复制windows下的fonts字库文件夹到liunx服务器

    1.1 fonts目录为C:\Windows\Fonts

    image.png

    1.2 把Fonts文件夹压缩上传待部署的Linux服务器的目录

    任意目录即可如:任一目录即可,如 /opt/test

    复制Dockerfile到待部署的Linux服务器的目录

    如 /opt/test

    cd /opt/test
    

    Dockerfile

    FROM debian:jessie
    
    ARG PHANTOM_JS_VERSION
    ENV PHANTOM_JS_VERSION ${PHANTOM_JS_VERSION:-2.1.1-linux-x86_64}
    
    # Install runtime dependencies
    RUN apt-get update \
    && apt-get install -y --no-install-recommends \
    ca-certificates \
    bzip2 \
    libfontconfig \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*
    
    #先安装fonts字库
    RUN apt-get update && apt-get install -y xfonts-wqy
    
    #添加windows字库,把windows字库复制到当前目录
    COPY Fonts /usr/share/fonts
    RUN cd /usr/share/fonts && apt-get install -y fontconfig  && fc-cache -fv
    
    # Install official PhantomJS release
    # Install dumb-init (to handle PID 1 correctly).
    # https://github.com/Yelp/dumb-init
    # Runs as non-root user.
    # Cleans up.
    RUN set -x \
    && apt-get update \
    && apt-get install -y --no-install-recommends \
    curl \
    && mkdir /tmp/phantomjs \
    && curl -L https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-${PHANTOM_JS_VERSION}.tar.bz2 \
    | tar -xj --strip-components=1 -C /tmp/phantomjs \
    && mv /tmp/phantomjs/bin/phantomjs /usr/local/bin \
    && curl -Lo /tmp/dumb-init.deb https://github.com/Yelp/dumb-init/releases/download/v1.1.3/dumb-init_1.1.3_amd64.deb \
    && dpkg -i /tmp/dumb-init.deb \
    && apt-get purge --auto-remove -y \
    curl \
    && apt-get clean \
    && rm -rf /tmp/* /var/lib/apt/lists/* \
    && useradd --system --uid 52379 -m --shell /usr/sbin/nologin phantomjs \
    && su phantomjs -s /bin/sh -c "phantomjs --version"
    
    USER phantomjs
    
    EXPOSE 8910
    
    ENTRYPOINT ["dumb-init"]
    CMD ["phantomjs"]
    
    

    3、构建自定义的phantomjs镜像

    cd /opt/test
    docker build -t phantomjs:1.0 .
    

    4.启动docker容器

    docker run -d --restart=always --name phantomjs  -p 8910:8910 phantomjs:1.0 phantomjs --webdriver=8910
    
    

    5.最终效果

    image.png

    结语:
    通过java程序远程调用phantomjs参考好友LI木水写的
    https://www.jianshu.com/p/9b7abead49cc

    相关文章

      网友评论

        本文标题:在docker中远程调用phantomJS,中文乱码问题解决

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