在 docker 中安装带节点的 phantomjs

Installing phantomjs with node in docker

我正在尝试将 phantomjs 可执行文件安装在 /usr/local/bin 中的 docker 容器中,与节点一起。我想我快到了,但我是 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 可执行文件

谁能给我一些指点?如果您 post 发表评论,我们很乐意提供更多详细信息。

有一个 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 文件解决了问题

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