在Docker容器中静默安装pecl模块(例如pecl_http)?

 沙胆建筑_829 发布于 2022-12-20 15:16

我正在尝试在Docker容器中安装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在docker文件中使用,并且容器已成功构建-没有安装pecl_http。

如果我连接到容器,pecl install pecl_http-1.7.6只需在每个提示后按回车,就可以使用交互式安装pecl_http 。我刚刚了解到yes,它似乎很适合我的需求。在线搜索表明,许多人已经使用它来执行无人值守的pecl安装,包括pecl_http。但是,当我尝试在docker容器中使用它时,它会失败configure: error: could not find magic.h

如何在Docker中执行无提示pecl_http安装?

1 个回答
  • pecl install在问这个问题:

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

    yes "\n"没有按照您的想法去做-实际上是在输出:

    \n
    \n
    \n
    \n
    \n
    \n
    

    所以,因为你说\n在针对上述问题,安装程序认为你告诉它在寻找\nlibmagic,当然它的失败,因为\n完全是无稽之谈。

    yes在您告诉它输出的每个命令之后都有一个隐式返回,因此,如果您只想让它命中return并使用默认值,请使用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语句,以充分利用docker缓存。

    2022-12-20 15:18 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有