我尝试在phantomjs
中将/usr/local/bin
可执行文件安装在docker容器中,与节点一起安装。我想我几乎就在那里,但我对docker并不熟悉,也不熟悉安装二进制文件或使用Linux,因此很难找到我出错的地方。
这是我的泊坞文件:
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,phantomjs
中肯定有一个名为/usr/local/bin
的内容,但我假设我已经将错误的内容联系起来或者#&# 39; s无效的可执行文件。我的应用程序中发出错误,告诉我phantomjs
中没有/usr/local/bin
可执行文件。
任何人都可以给我一些指示吗?如果您发表评论,很高兴提供更多详细信息。
答案 0 :(得分:11)
使用以下Dockerfile existing image for this already on Docker hub:
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"]