【问题标题】:Installing phantomjs with node in docker在 docker 中使用 node 安装 phantomjs
【发布时间】:2022-02-01 05:29:07
【问题描述】:

我正在尝试将phantomjs 中的/usr/local/bin 可执行文件安装在docker 容器中,与node.js 一起。我想我快到了,但我对 docker 还是很陌生,并不精通安装二进制文件或使用 Linux,所以很难找出哪里出错了。

这是我的 docker 文件:

FROM        node:6.4-onbuild

# Install phantomjs
WORKDIR     ~
RUN         apt-get install libfreetype6 libfreetype6-dev \
            && apt-get install libfontconfig1 libfontconfig1-dev
RUN         export PHANTOM_JS="phantomjs-2.1.1-linux-i686" \
            && wget https://bitbucket.org/ariya/phantomjs/downloads/$PHANTOM_JS.tar.bz2 \
            && tar xvjf $PHANTOM_JS.tar.bz2 \
            && mv $PHANTOM_JS /usr/local/share \
            && ln -sf /usr/local/share/$PHANTOM_JS/bin/phantomjs /usr/local/bin

WORKDIR     /usr/src/app
RUN         npm run build
EXPOSE      8080
CMD         ["node", "./bin/start.js"]

我已经在容器上运行了 bash,在 /usr/local/bin 中肯定有一个叫做 phantomjs 的东西,但我假设我链接了错误的东西,或者它是一个无效的可执行文件。我的应用程序抛出一个错误,告诉我/usr/local/bin 中没有phantomjs 可执行文件。

谁能给我一些建议?如果您发表评论,很高兴提供更多详细信息。

【问题讨论】:

    标签: node.js docker phantomjs devops


    【解决方案1】:

    existing image for this already on Docker hub 使用以下 Dockerfile:

    FROM debian:jessie 
      MAINTAINER Werner Beroux <werner@beroux.com> 
      # 1. Install runtime dependencies 
      # 2. Install official PhantomJS release 
      # 3. Clean up 
    
      RUN apt-get update \
          && apt-get install -y --no-install-recommends \
              ca-certificates \
              bzip2 \
              libfontconfig \
          && apt-get clean \
          && rm -rf /var/lib/apt/lists/*
      
      RUN apt-get update \
          && apt-get install -y --no-install-recommends \
              curl \
          && mkdir /tmp/phantomjs \
          && curl -L https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2 \
                  | tar -xj --strip-components=1 -C /tmp/phantomjs \
          && cd /tmp/phantomjs \
          && mv bin/phantomjs /usr/local/bin \
          && cd \
          && apt-get purge --auto-remove -y \
              curl \
          && apt-get clean \
          && rm -rf /tmp/* /var/lib/apt/lists/*
      
      # Run as non-root user 
      RUN useradd --system --uid 72379 -m --shell /usr/sbin/nologin phantomjs
      
      USER phantomjs 
      EXPOSE 8910 
      CMD ["/usr/local/bin/phantomjs"]
    

    【讨论】:

    • 我先尝试了那个 docker 镜像,但对我不起作用。也许将它与 node-onbuild docker 映像一起使用时会出现问题。
    • 很难在没有更多细节的情况下帮助“不起作用”和“将其与 node-onbuild 映像一起使用”。
    • 同意,我将重新运行它并用结果评论/编辑我的帖子
    • 我最终只使用了两个不同的容器并使用 webdriver 来控制幻象。无论如何我都会接受你的回答,因为无论如何上面的容器应该已经工作了。
    【解决方案2】:

    我们使用以下 docker 文件解决了

    FROM ubuntu:latest
    
    WORKDIR /opt/backend
    RUN su -
    RUN  apt-get update
    RUN apt-get install sudo -y
    RUN sudo apt install curl -y
    RUN curl -sL https://deb.nodesource.com/setup_17.x -o nodesource_setup.sh
    RUN sudo bash nodesource_setup.sh
    RUN sudo apt install nodejs -y 
    RUN sudo apt-get install -y fontconfig
    RUN sudo apt-get install -y libfontconfig
    
    COPY . .
    # Rference [https://github.com/Medium/phantomjs#linux-note][1]
    RUN sudo npm set strict-ssl false
    RUN sudo npm install 
    RUN sudo npm install -g phantomjs-prebuilt 
    RUN sudo npm install -g html-pdf 
    
    RUN sudo npm rebuild
    RUN sudo npm run build
    
    EXPOSE 3005
    CMD npm run start:$env_Profile
    

    【讨论】:

      猜你喜欢
      • 2018-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-22
      • 2014-05-31
      • 2021-02-22
      • 1970-01-01
      • 2018-06-23
      相关资源
      最近更新 更多