我正在使用这个官方 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 方式是什么?
我应该使用它作为基础,还是可以添加参数以使所需的扩展可配置?
Alpine 使用 apk 来安装软件包。编译过程抱怨缺少autoconf
,可在 Alpine 中找到autoconf
包裹。
我建议您运行这些命令:
RUN apk --update yaml-dev
RUN apk add --no-cache --virtual .build-deps \
g++ make autoconf
RUN pecl channel-update pecl.php.net
RUN pecl install yaml && docker-php-ext-enable yaml
RUN apk del --purge .build-deps
如果需要安装其他非开发库,可以单独安装apk add
命令。该程序将:
-
安装构建依赖,使用--no-cache
意味着您正在使用更新的索引并且未在本地缓存(因此不需要--update
或者将 pkg 保存在缓存中)。--virtual
意味着您正在为所有以后可以删除的包创建虚拟引用(因为它们在编译过程后毫无用处)
-
使用 pecl 和 docker-php-ext-enable 做你的事情
-
删除之前的构建依赖
如果您仍然遇到任何缺少的依赖项,您可以参考以下内容:https://pkgs.alpinelinux.org/packages
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)