首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在码头集装箱内静默安装pecl模块(例如pecl_http)?

在码头集装箱内静默安装pecl模块(例如pecl_http)?
EN

Stack Overflow用户
提问于 2014-09-19 19:17:32
回答 1查看 5.4K关注 0票数 3

我正试图在一个码头容器中安装pecl_http。目前,我的Dockerfile如下所示:

代码语言:javascript
复制
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安装?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-19 21:08:16

你的pecl install在问你这个问题:

是否启用响应内容类型猜测;指定libmagic目录no:

yes "\n"并没有做你想做的事情--它实际上是在输出:

代码语言:javascript
复制
\n
\n
\n
\n
\n
\n

因此,由于您在回答上述问题时说的是\n,安装程序认为您是在告诉它在\n中查找libmagic,当然它失败了,因为\n是胡说八道。

yes在命令它输出后有一个隐式返回,所以如果您只想让它返回并使用默认值,请使用yes ''

工作Dockerfile

代码语言:javascript
复制
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语句,以充分利用停靠器缓存。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25940933

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档