gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 11:36:57 35 4
gpt4 key购买 nike

我正在尝试在 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 安装?

最佳答案

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

whether to enable response content type guessing; specify libmagic directory [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充分利用 docker 缓存的语句。

关于docker - 在 Docker 容器中静默安装 pecl 模块(例如 pecl_http)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25940933/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com