我正试图在一个码头容器中安装pecl_http。目前,我的Dockerfile如下所示:
FROM fun:5000/apache-php:0.1.0
# Install dependencies
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update && \
apt-get -y install \
php5-dev \
libcurl4-openssl-dev && \
yes "\n" | pecl install pecl_http-1.7.6 && \
echo "extension=http.so" > /etc/php5/mods-available/http.ini && \
cd /etc/php5/apache2/conf.d/ && \
ln -s ../../mods-available/http.ini 20-http.ini && \
...最初,我只是在码头文件中使用pecl install pecl_http-1.7.6,容器成功地构建了-没有安装pecl_http。
如果我附加到容器,我可以安装pecl_http与交互式pecl install pecl_http-1.7.6,只需在每次提示后按回车。我刚刚了解到yes,它似乎符合我的需要。在线搜索表明,许多人使用它来执行无人值守的pecl安装,包括pecl_http;但是,当我试图在我的码头容器中使用它时,它在configure: error: could not find magic.h中失败了。
如何在Docker中执行无声的pecl_http安装?
发布于 2014-09-19 21:08:16
你的pecl install在问你这个问题:
是否启用响应内容类型猜测;指定libmagic目录no:
而yes "\n"并没有做你想做的事情--它实际上是在输出:
\n
\n
\n
\n
\n
\n因此,由于您在回答上述问题时说的是\n,安装程序认为您是在告诉它在\n中查找libmagic,当然它失败了,因为\n是胡说八道。
yes在命令它输出后有一个隐式返回,所以如果您只想让它返回并使用默认值,请使用yes ''。
工作Dockerfile
FROM ubuntu:14.04
# Install dependencies
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update
RUN apt-get -y install php5-dev
RUN apt-get -y install libcurl4-openssl-dev
RUN apt-get -y install libevent-dev
RUN echo "extension=http.so" > /etc/php5/mods-available/http.ini
RUN yes "" | pecl install pecl_http-1.7.6
RUN cd /etc/php5/apache2/conf.d/
RUN ln -s ../../mods-available/http.ini 20-http.ini
...额外提示:不要害怕将命令拆分成单独的RUN语句,以充分利用停靠器缓存。
https://stackoverflow.com/questions/25940933
复制相似问题