添加yaml扩展到使用官方阿尔卑斯山docker图像的PHP

我正在使用这个官方的PHP的Docker镜像: https : //github.com/docker-library/php/blob/76a1c5ca161f1ed6aafb2c2d26f83ec17360bc68/7.1/alpine/Dockerfile

现在我需要添加对yaml扩展的支持,即不捆绑php。 我看到我使用的基本图像使用phpize。

我正在尝试这种方法:

FROM php:7.1.5-alpine # Install and enable yaml extension support to php RUN apk add --update yaml yaml-dev RUN pecl channel-update pecl.php.net RUN pecl install yaml-2.0.0 && docker-php-ext-enable yaml 

但是我得到这个错误:

 running: phpize Configuring for: PHP Api Version: 20160303 Zend Module Api No: 20160303 Zend Extension Api No: 320160303 Cannot find autoconf. Please check your autoconf installation and the $PHP_AUTOCONF environment variable. Then, rerun this script. ERROR: `phpize' failed ERROR: Service 'php_env' failed to build: The command '/bin/sh -c pecl install yaml-2.0.0 && docker-php-ext-enable yaml' returned a non-zero code: 1 

什么是最习惯的docker使用该图像的方式,并添加支持?

我应该使用它作为基础,还是可以添加参数,以使想要的扩展可configuration吗?

Alpine使用apk来安装软件包。 编译过程中抱怨缺lessautoconf ,这是在Alpine的autoconf包中find的。

我build议你运行这些命令:

 RUN apk add --no-cache --virtual .build-deps \ g++ make autoconf yaml-dev RUN pecl channel-update pecl.php.net RUN pecl install yaml-2.0.0 && docker-php-ext-enable yaml RUN apk del --purge .build-deps 

如果您需要安装其他非开发库,您可以将它们安装在单独的apk add命令中。 这个程序将会:

  1. 安装build deps,使用--no-cache意味着你正在使用更新的索引,而不是本地caching(因此不需要--update或者将pkg保存在caching中)。 --virtual意味着你正在为所有那些以后可以被删除的包创build一个虚拟引用(因为在编译过程之后它们是无用的)

  2. 用pecl和docker-php-ext-enable做你的东西

  3. 删除以前的构build代码

如果您仍然遇到任何缺失的依赖关系,可以参考: https : //pkgs.alpinelinux.org/packages