如何在 Dockerfile 中添加 ext-http

How to add ext-http in Dockerfile

我有以下简单的 dockerfile 可以从 alpine 添加 php,

FROM php:7.2-fpm-alpine

# Install composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

# Install extensions
RUN docker-php-ext-install mbstring tokenizer mysqli pdo_mysql


COPY ./app /app
WORKDIR /app
RUN composer install

虽然 运行 composer install 它抱怨此消息 - The requested PHP extension ext-http * is missing from your system. Install or enable PHP's http extension.

我试着看看我是否可以使用 'docker-php-ext-install' 安装它,但根据 here 扩展不包括在内。

也尝试添加RUN apk add php-http,我也收到以下错误信息

PS:使用 sudo apt install php-http

安装扩展后,它可以在我的本地 linux 机器上本地运行

首先,您可以在添加包之前添加一个 apk update。然而 php_http 包在 alpine 中不存在,所以你需要编译 pecl 模块。

following question 为灵感,我发现将此添加到您的 Dockerfile 效果很好:

RUN apk add --update --virtual .build-deps autoconf g++ make zlib-dev curl-dev libidn2-dev libevent-dev icu-dev libidn-dev 
RUN docker-php-ext-install mbstring tokenizer mysqli pdo_mysql json hash iconv

RUN pecl install raphf propro
RUN docker-php-ext-enable raphf propro
RUN pecl install pecl_http
RUN echo -e "extension=raphf.so\nextension=propro.so\nextension=iconv.so\nextension=http.so" > /usr/local/etc/php/conf.d/docker-php-ext-http.ini
RUN rm -rf /usr/local/etc/php/conf.d/docker-php-ext-raphf.ini
RUN rm -rf /usr/local/etc/php/conf.d/docker-php-ext-propro.ini
RUN rm -rf /tmp/*